考虑以下情况:
将这些服务部署到其中的最佳实践是什么?
全部都在同一个kubernetes集群中:
这是个好方法吗?
答案 0 :(得分:3)
这里有些误会。
关于微服务的术语不是规模,而是组织性的东西。十年前,整个系统被部署为 monolith ,但现在建议团队的人数不得超过5-8人,并且这些团队应按照自己的步调工作>部署周期。因此,必须将 monolith 分成较小的服务。这种架构模式下的服务称为 microservices -但不是 small 或 big 。
您的所有服务都应作为Deployment
部署在Kubernetes上,并且这些服务应为无状态。因此,即使“主要的重型服务”也应该是无状态的,并且可以扩展到多个副本。
您是正确的,因为只有需要公开给互联网的服务才应该公开给互联网。
您的“重型服务”是否应该以{{1}}或Service
类型的LoadBalancer
公开,实际上实际上取决于您使用的Ingress Controller。例如。如果您使用的是 Google Kubernetes Engine ,则应将其公开为NodePort
类型。是的,其他应用程序应具有类型NodePort
的{{1}}。
值得注意的是,所有Kubernetes Service对象都将为副本提供负载平衡功能。服务类型,例如Service
,ClusterIP
或LoadBalancer
是有关如何公开服务的更多信息。
答案 1 :(得分:1)
是的,好的方法是使用负载均衡器管理来自公众的高流量。当您定义最小和最大广告连播时,如果交通繁忙,则会增加广告连播的数量,而对于低流量则自动减少。对于不想向公众公开的服务,请使其成为 ClusterIP 。
答案 2 :(得分:-1)
对于其他服务,您可以使用k8s Horizontal Pod AutoScaling。在这种情况下,广告连播号码将根据流量进行缩放。它对于突然的峰值特别有效,您可以确保正确使用资源。
要轻松集成微服务并管理微服务之间的流量,可以使用Istio。