使用kube-proxy进行负载平衡

时间:2020-01-29 20:15:03

标签: kubernetes google-kubernetes-engine kube-proxy

official kubernetes docs明确指出, kube-proxy “不会扩展到具有数千个服务的超大型集群” ,但是当{{1} }类型的服务是在GKE上创建的,LoadBalancer默认情况下设置为externalTrafficPolicy(这意味着除了外部负载平衡之外,每个请求都将通过kube-proxy进行负载平衡)。如this video from Next '17中的说明,这是为了避免流量不平衡(因为Google的外部负载平衡器无法询问集群每个节点上有多少个给定服务的Pod)。

出现问题:这是否意味着:

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

b)...或者有关kube-proxy可伸缩性差的信息不正确或已过时

c)...或我无法提出的其他内容

谢谢!

2 个答案:

答案 0 :(得分:3)

will not scale to very large clusters with thousands of services引用用户空间代理,这是很久以前基于完整iptables的实现发生之前的默认模式。因此,此声明在很大程度上已经过时了,但是...

iptables模式具有与规模相关的自身问题(极大的iptables规则链需要大量时间来更新),这是IPVS使其成为kube-proxy的原因之一。您必须具有真正的核心能力才能使用kube-proxy遇到性能问题。

答案 1 :(得分:-1)

根据有关外部交通政策的Kubernetes official documentation,答案是a)。

由于群集选项 使客户端源IP变得模糊,可能会导致到另一节点的第二跳,但总体负载分布应良好 ,而本地选项 保留客户端源IP,并避免对LoadBalancer和NodePort类型服务进行第二跳,但可能会带来流量分布不平衡的潜在风险。