我创建了一个部署,导致2个节点中存在4个pod。
然后我通过服务公开这些pod,从而产生以下群集IP和pod端点:
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之间平衡,而不仅仅是单个节点上的pod(例如,通过nodePort访问)。
我知道kubernetes使用IP表来平衡单个节点上pod的请求,但是我找不到任何文档来解释kubernetes如何在多个节点之间平衡内部服务请求(我们不使用load内部服务负载平衡的平衡器或入口。)
群集IP本身是虚拟的,我认为这可行的唯一方法是,如果群集IP是循环映射到服务端点IP地址,客户端必须查找群集IP /服务并选择端点IP?
答案 0 :(得分:7)
您需要的一切在第二段&#34;虚拟IP和服务代理&#34;本文档:https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
简而言之:目前,根据代理模式,对于ClusterIP,它只是循环/随机。它由kube-proxy完成,它在每个节点上运行,代理UDP和TCP并提供负载平衡。
将kubernetes视为一个整体而不是特定的节点更好。抽象在这里发挥作用。
希望它能回答你的问题。