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)...或我无法提出的其他内容
谢谢!
答案 0 :(得分:3)
will not scale to very large clusters with thousands of services
引用用户空间代理,这是很久以前基于完整iptables的实现发生之前的默认模式。因此,此声明在很大程度上已经过时了,但是...
答案 1 :(得分:-1)
根据有关外部交通政策的Kubernetes official documentation,答案是a)。
由于群集选项 使客户端源IP变得模糊,可能会导致到另一节点的第二跳,但总体负载分布应良好 ,而本地选项 保留客户端源IP,并避免对LoadBalancer和NodePort类型服务进行第二跳,但可能会带来流量分布不平衡的潜在风险。