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.