Kubernetes服务集群IP,如何在不同节点之间内部平衡负载 [英] Kubernetes Service cluster IP, how is this internally load balanced across different nodes

查看:92
本文介绍了Kubernetes服务集群IP,如何在不同节点之间内部平衡负载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个部署,该部署导致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如何在多个节点之间平衡内部服务请求(我们不使用负载平衡器或Ingress用于内部服务负载平衡).

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

解决方案

您需要的所有内容在本文档的第二段虚拟IP和服务代理"中进行了说明: 解决方案

Everything you need is explained in second paragraph "Virtual IPs and service proxies" of this documentation: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service

In nutshell: currently, depending on the proxy mode, for ClusterIP it's just round robin/random. It's done by kube-proxy, which runs on each nodes, proxies UDP and TCP and provides load balancing.

It's better to think of kubernetes as a whole rather than specific nodes. Abstraction does its thing here.

Hope it answers your question.

这篇关于Kubernetes服务集群IP,如何在不同节点之间内部平衡负载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆