kubernetes之kube-proxy运行机制分析

在kubernetes集群的每一个node都会运行一个kube-proxy服务进程,这个进程可用看做Service的透明代理兼负载均衡器。其核心功能是将到某个Service的访问请求转发到后端的多个pod实例上。对每个TCP类型的kubernetes Service,kube-proxy都会在本地Node上创建一个SocketServer类负责接受请求,而后均匀发送到后端某个pod的端口上,这个过程默认采用Round Robin负载均衡算法。也提供经过修改Service的service.spec.sessionAffinity参数的值来实现会话保持特性的定向转发。若是设置的值为clientIp,则未来自同一个clientIp的请求都转发到同一个后端pod上。node

访问Service的请求,不管是用Cluster Ip+TargetPort的方式仍是用节点机Ip+NodePort的方式,都被节点及的Iptables规则重定向到kube-proxy监听Service服务代理端口。kube-proxy接收到Service的访问请求后,会如何选择后端的pod呢?算法

目前kube-porxy负载均衡器只支持Round Robin算法,按照成员列表逐个选取成员。一轮循环完,开始下一轮。还支持Session保持。后端

相关文章
相关标签/搜索