5.kube-proxy通過查詢和監(jiān)聽API Server 中Service與Endpoints的變化,為每個(gè)Service都建立一個(gè)“服務(wù)代理對象”,并自動同步。服務(wù)代理對象是kube-proxy程序內(nèi)部的一種數(shù)據(jù)結(jié)構(gòu),它包括一個(gè)用于監(jiān)聽此服務(wù)請求的SockerServer,SocketServer的端口是隨機(jī)選擇一個(gè)本地空閑端口。此外,kube-proxy內(nèi)部創(chuàng)建了一個(gè)負(fù)載均衡器-LoadBalancer.
6.針對發(fā)生變化的Service列表,kube-proxy會逐個(gè)處理: a. 如果沒有設(shè)置集群IP,則不做任何處理,否則,取該Service的所有端口定義列表。 b.為Service端口分配服務(wù)代理對象并為該Service創(chuàng)建相關(guān)的Iptables規(guī)則。 c.更新負(fù)載均衡器組件中對應(yīng)Service的轉(zhuǎn)發(fā)地址列表
7.kube-proxy在啟動時(shí)和監(jiān)聽到Service或Endpoint的變化后,會在本機(jī)Iptables的NAT表中添加4條規(guī)則鏈。 a.KUBE-PORTALS-CONTAINER: 從容器中通過Cluster IP 和端口號訪問service. b.KUBE-PORTALS-HOST: 從主機(jī)中通過Cluster IP 和端口號訪問service. c.KUBE-NODEPORT-CONTAINER:從容器中通過NODE IP 和端口號訪問service. d. KUBE-NODEPORT-HOST:從主機(jī)中通過Node IP 和端口號訪問service.