5.kube-proxy通过查询和监听API Server 中Service与Endpoints的变化,为每个Service都建立一个“服务代理对象”,并自动同步。服务代理对象是kube-proxy程序内部的一种数据结构,它包括一个用于监听此服务请求的SockerServer,SocketServer的端口是随机选择一个本地空闲端口。此外,kube-proxy内部创建了一个负载均衡器-LoadBalancer.
6.针对发生变化的Service列表,kube-proxy会逐个处理: a. 如果没有设置集群IP,则不做任何处理,否则,取该Service的所有端口定义列表。 b.为Service端口分配服务代理对象并为该Service创建相关的Iptables规则。 c.更新负载均衡器组件中对应Service的转发地址列表
7.kube-proxy在启动时和监听到Service或Endpoint的变化后,会在本机Iptables的NAT表中添加4条规则链。 a.KUBE-PORTALS-CONTAINER: 从容器中通过Cluster IP 和端口号访问service. b.KUBE-PORTALS-HOST: 从主机中通过Cluster IP 和端口号访问service. c.KUBE-NODEPORT-CONTAINER:从容器中通过NODE IP 和端口号访问service. d. KUBE-NODEPORT-HOST:从主机中通过Node IP 和端口号访问service.