重慶分公司
重慶分公司
kubernetes實(shí)踐之五十一:kube-proxy運(yùn)行機(jī)制分析-創(chuàng)新互聯(lián)
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)賓縣,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792ong>一: Service,Endpoints與Pod的關(guān)系
Kube-proxy進(jìn)程獲取每個Service的Endpoints,實(shí)現(xiàn)Service的負(fù)載均衡功能
二:Service的負(fù)載均衡轉(zhuǎn)發(fā)規(guī)則
訪問Service的請求,不論是Cluster IP+TargetPort的方式;還是用Node節(jié)點(diǎn)IP+NodePort的方式,都被Node節(jié)點(diǎn)的Iptables規(guī)則重定向到Kube-proxy監(jiān)聽Service服務(wù)代理端口。kube-proxy接收到Service的訪問請求后,根據(jù)負(fù)載策略,轉(zhuǎn)發(fā)到后端的Pod。
三:kube-proxy工作原理
1.Service在很多情況下只是一個概念,而真正將Service的作用實(shí)現(xiàn)的是kube-proxy服務(wù)進(jìn)程。
2.每個Node節(jié)點(diǎn)上都會運(yùn)行一個kube-proxy服務(wù)進(jìn)程。
3.對每一個TCP類型的Kubernetes Service,kube-proxy都會在本地Node節(jié)點(diǎn)上建立一個SocketServer來負(fù)責(zé)接收請求,然后均勻發(fā)送到后端某個Pod的端口上。這個過程默認(rèn)采用Round Robin負(fù)載均衡算法。
4.kube-proxy在運(yùn)行過程中動態(tài)創(chuàng)建與Service相關(guān)的Iptables規(guī)則,這些規(guī)則實(shí)現(xiàn)了ClusterIp及NodePort的請求流量重定向到kube-proxy進(jìn)程上對應(yīng)服務(wù)的代理端口功能。
5.kube-proxy通過查詢和監(jiān)聽API Server 中Service與Endpoints的變化,為每個Service都建立一個“服務(wù)代理對象”,并自動同步。服務(wù)代理對象是kube-proxy程序內(nèi)部的一種數(shù)據(jù)結(jié)構(gòu),它包括一個用于監(jiān)聽此服務(wù)請求的SockerServer,SocketServer的端口是隨機(jī)選擇一個本地空閑端口。此外,kube-proxy內(nèi)部創(chuàng)建了一個負(fù)載均衡器-LoadBalancer.
6.針對發(fā)生變化的Service列表,kube-proxy會逐個處理:
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在啟動時和監(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.
本文標(biāo)題:kubernetes實(shí)踐之五十一:kube-proxy運(yùn)行機(jī)制分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/codceh.html
-
在線咨詢
微信咨詢
電話咨詢
-
028-86922220(工作日)
18980820575(7×24)
-
提交需求
-
返回頂部