首页 文章

Kubernetes服务集群IP,如何在不同节点之间内部负载 balancer

提问于
浏览
6

我创建了一个部署,导致2个节点中存在4个pod .

然后,我通过一个服务公开这些pod,从而产生以下集群IP和pod endpoints :

Name:                     s-flask
......
IP:                       10.110.201.8
Port:                     <unset>  9080/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  30817/TCP
Endpoints:                
192.168.251.131:5000,192.168.251.132:5000,192.168.251.134:5000 + 1 more...

如果通过集群IP在内部访问服务,请求将在两个节点和所有pod之间 balancer ,而不仅仅是单个节点上的pod(例如,通过nodePort访问) .

我知道kubernetes使用IP表来 balancer 单个节点上的pod的请求,但我找不到任何文档来解释kubernetes如何在多个节点之间 balancer 内部服务请求(我们不使用负载 balancer 器或入口来处理内部服务负载 balancer ) .

群集IP本身是虚拟的,我认为这可行的唯一方法是,如果群集IP是循环映射到服务 endpoints IP地址,客户端必须查找群集IP /服务并选择 endpoints IP ?

1 回答

  • 3

    您需要的一切在本文档的第"Virtual IPs and service proxies"段中进行了解释:https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service

    简而言之:目前,根据代理模式,对于ClusterIP,它只是循环/随机 . 它由kube-proxy完成,它在每个节点上运行,代理UDP和TCP并提供负载 balancer .

    最好将kubernetes视为一个整体,而不是特定的节点 . 抽象在这里发挥作用 .

    希望它能回答你的问题 .

相关问题