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上。

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

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

posted @ 2019-08-17 11:27 菲菲菲菲菲常新的新手 阅读(...) 评论(...) 编辑 收藏