【问题标题】:How to make kube-proxy is distribute the load evently?如何使 kube-proxy 分配负载?
【发布时间】:2020-01-06 09:53:25
【问题描述】:

我有一个 ClusterIP 服务,用于在内部将负载分配到 2 个 POD。 负载在 POD 之间分布不均。

如何让负载分布均匀?

【问题讨论】:

  • 你怎么知道负载分布不均匀?

标签: kubernetes kubernetes-service kube-proxy


【解决方案1】:

用户空间代理模式下的kube-proxy通过循环方式选择后端pod。

iptables 模式下的 kube-proxy 随机选择后端 pod。

【讨论】:

    【解决方案2】:

    Kubernetes 使用 iptables 在 pod 之间分配负载(默认为iptables proxy mode)。

    如果您有 2 个 pod,则以 0.5 (50%) 的概率均匀分布。因为它没有使用循环,所以后端 pod 是随机选择的。它甚至会在更长的时间范围内。

    如果有 3 个 pod,概率将变为 1/3 (33%),4 个 pod 为 1/4,依此类推。

    要检查它,您可以运行sudo iptables-save

    2 个 pod 的示例输出(用于 nginx 服务):

    sudo iptables-save | grep nginx
    
    -A KUBE-NODEPORTS -p tcp -m comment --comment "default/nginx:" -m tcp --dport 31554 -j KUBE-SVC-4N57TFCL4MD7ZTDA    //KUBE-SVC-4N57TFCL4MD7ZTDA is a tag for nginx service
    
    sudo iptables-save | grep KUBE-SVC-4N57TFCL4MD7ZTDA
    -A KUBE-SVC-4N57TFCL4MD7ZTDA -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-SOWYYRHSSTWLCRDY
    

    如果您想使用循环算法确保负载均匀分布,您可以使用IPVS,默认情况下使用 rr(循环)。它作为集群前的负载平衡器,将基​​于 TCP 和 UDP 的服务的请求定向到真实服务器,并使真实服务器的服务在单个 IP 地址上显示为虚拟服务。在local-up、kubeadm和GCE创建的集群上是supported

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 2022-10-06
      • 2020-06-16
      • 1970-01-01
      相关资源
      最近更新 更多