将微服务部署到kubernetes的最佳实践

时间:2019-12-12 20:44:12

标签: kubernetes architecture microservices

考虑以下情况:

  • 我有一项主要的重型服务和许多其他的小型微服务
  • 小型微服务仅消耗重服务
  • 只有主要的重要服务可以公开访问互联网。

将这些服务部署到其中的最佳实践是什么?

全部都在同一个kubernetes集群中:

  • 主要的重要服务 LoadBalancer
  • 其他小型微服务作为ClusterIP(以保护它们免受公共互联网的攻击)。

这是个好方法吗?

3 个答案:

答案 0 :(得分:3)

这里有些误会。

关于微服务的术语不是规模,而是组织性的东西。十年前,整个系统被部署为 monolith ,但现在建议团队的人数不得超过5-8人,并且这些团队应按照自己的步调工作>部署周期。因此,必须将 monolith 分成较小的服务。这种架构模式下的服务称为 microservices -但不是 small big

您的所有服务都应作为Deployment部署在Kubernetes上,并且这些服务应为无状态。因此,即使“主要的重型服务”也应该是无状态的,并且可以扩展到多个副本。

您是正确的,因为只有需要公开给互联网的服务才应该公开给互联网。

您的“重型服务”是否应该以{{1​​}}或Service类型的LoadBalancer公开,实际上实际上取决于您使用的Ingress Controller。例如。如果您使用的是 Google Kubernetes Engine ,则应将其公开为NodePort类型。是的,其他应用程序应具有类型NodePort的{​​{1}}。

值得注意的是,所有Kubernetes Service对象都将为副本提供负载平衡功能。服务类型,例如ServiceClusterIPLoadBalancer是有关如何公开服务的更多信息。

答案 1 :(得分:1)

是的,好的方法是使用负载均衡器管理来自公众的高流量。当您定义最小和最大广告连播时,如果交通繁忙,则会增加广告连播的数量,而对于低流量则自动减少。对于不想向公众公开的服务,请使其成为 ClusterIP

答案 2 :(得分:-1)

对于其他服务,您可以使用k8s Horizo​​ntal Pod AutoScaling。在这种情况下,广告连播号码将根据流量进行缩放。它对于突然的峰值特别有效,您可以确保正确使用资源。

要轻松集成微服务并管理微服务之间的流量,可以使用Istio。