问题描述
假设这种情况:
服务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的所有未完成的连接都将丢失。在这两种情况下,客户端都必须重试受影响的请求。