Kubernetes 使用kube代理进行负载平衡

Kubernetes 使用kube代理进行负载平衡,kubernetes,google-kubernetes-engine,kube-proxy,Kubernetes,Google Kubernetes Engine,Kube Proxy,明确声明kube proxy“不会扩展到具有数千个服务的非常大的集群”,但是当在GKE上创建LoadBalancer类型的服务时,externalTrafficPolicy默认设置为Cluster(这意味着除了外部负载平衡外,每个请求都将由kube代理进行负载平衡)。例如,如中所述,这是为了避免流量不平衡(因为Google的外部负载平衡器无法询问集群每个节点上有多少给定服务的POD) 因此,问题是:这是否意味着: a) 默认情况下,GKE不能用于“具有数千项服务的超大集群”,为此,我需要将ext

明确声明kube proxy“不会扩展到具有数千个服务的非常大的集群”,但是当在GKE上创建
LoadBalancer
类型的服务时,
externalTrafficPolicy
默认设置为
Cluster
(这意味着除了外部负载平衡外,每个请求都将由kube代理进行负载平衡)。例如,如中所述,这是为了避免流量不平衡(因为Google的外部负载平衡器无法询问集群每个节点上有多少给定服务的POD)

因此,问题是:这是否意味着:

a) 默认情况下,GKE不能用于“具有数千项服务的超大集群”,为此,我需要将
externalTrafficPolicy
设置为
Local

b) …或者有关kube代理的可扩展性差的信息不正确或过时

c) …或者其他我想不出来的东西


谢谢

将无法扩展到具有数千项服务的超大集群
引用用户空间代理,这是很久以前基于iptables的完整实现之前的默认模式。所以这句话基本上已经过时了,但是

iptables模式有其自身的问题,这与规模有关(非常大的iptables规则链需要花费大量时间进行更新),这也是ipv将其转变为kube代理的原因之一。您必须有一个真正的核心规模,才能在kube proxy中遇到性能问题。

根据about externalTrafficPolicy,答案是a)


由于群集选项遮挡了客户机源IP,可能会导致到另一个节点的第二个跃点,但应具有良好的总体负载分布,而本地选项保留了客户机源IP,并避免了负载平衡器和节点端口类型服务的第二个跃点,但存在潜在的不平衡流量传播风险。

除此之外,我们还定期测试Kubernetes和GKE,具体测试数千项服务和数十万个POD。GKE的客户在生产中使用了数千个节点群集。@TimHockin和Radek:谢谢你们的帮助!因此,答案似乎应该是c:我很笨拙,没有注意到该引用仅用于传统模式;-]如果它放在模式解释之后,也许会更好,因为它现在的位置似乎脱离了代理模式的上下文,误导了像我这样笨拙的ppl;-]