在Azure Kubernetes服务AKS中,我有一个类型为“ ClusterIP”的服务,它在内部执行pod的负载平衡吗?

问题描述

假设这种情况:

服务A(ClusterIP):

  • Pod1(Image1)
  • Pod2(Image1)
  • Pod3(Image1)

服务B(ClusterIP):

  • Pod1(Image2)
  • Pod2(Image2)
  • Pod3(Image2)

假设我有一个入口控制器:

/ svcA>这将重定向到服务A / svcB>这将重定向到服务B

所以我的问题是,服务仍在各个Pod之间进行负载平衡? 如果服务A的Pod1忙,并且服务A的Pod2或Pod3必须出席请求该怎么办? 谁在执行负载平衡?

谢谢!

解决方法

它将进行负载平衡,但它不支持应用程序,因此,如果您的pod由于负载而无法处理请求,则该请求将丢失或返回错误。您可以使用准备就绪探针将Pod标记为未就绪,在这种情况下,它们将不会收到流量

,

一个名为kube-proxy的Kubernetes基础结构为ClusterIP服务(以及从集群内部调用的NodePort和LoadBalancer服务)提供负载平衡。实际的负载平衡取决于群集配置,但通常不是智能的;典型的即用型设置将使用循环或随机路由。 Kubernetes文档中有关Virtual IPs and service proxies的部分对此进行了更详细的讨论。

如果窗格deployment-a-pod-1太忙以至于无法处理请求,则对service-a的请求中的三分之一将超时。如果此积压也影响您用于活动性探针的HTTP请求,则最终将导致Pod重新启动,并且与该特定Pod的所有未完成的连接都将丢失。在这两种情况下,客户端都必须重试受影响的请求。