kubernetes實踐之五十一:kube-proxy執行機制分析
一: Service,Endpoints與Pod的關係
Kube-proxy程式獲取每個Service的Endpoints,實現Service的負載均衡功能
二:Service的負載均衡轉發規則
訪問Service的請求,不論是Cluster IP+TargetPort的方式;還是用Node節點IP+NodePort的方式,都被Node節點的Iptables規則重定向到Kube-proxy監聽Service服務代理埠。kube-proxy接收到Service的訪問請求後,根據負載策略,轉發到後端的Pod。
三:kube-proxy工作原理
1.Service在很多情況下只是一個概念,而真正將Service的作用實現的是kube-proxy服務程式。
2.每個Node節點上都會執行一個kube-proxy服務程式。
3.對每一個TCP型別的Kubernetes Service,kube-proxy都會在本地Node節點上建立一個SocketServer來負責接收請求,然後均勻傳送到後端某個Pod的埠上。這個過程預設採用Round Robin負載均衡演算法。
4.kube-proxy在執行過程中動態建立與Service相關的Iptables規則,這些規則實現了ClusterIp及NodePort的請求流量重定向到kube-proxy程式上對應服務的代理埠功能。
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.
Kube-proxy程式獲取每個Service的Endpoints,實現Service的負載均衡功能
二:Service的負載均衡轉發規則
訪問Service的請求,不論是Cluster IP+TargetPort的方式;還是用Node節點IP+NodePort的方式,都被Node節點的Iptables規則重定向到Kube-proxy監聽Service服務代理埠。kube-proxy接收到Service的訪問請求後,根據負載策略,轉發到後端的Pod。
三:kube-proxy工作原理
1.Service在很多情況下只是一個概念,而真正將Service的作用實現的是kube-proxy服務程式。
2.每個Node節點上都會執行一個kube-proxy服務程式。
3.對每一個TCP型別的Kubernetes Service,kube-proxy都會在本地Node節點上建立一個SocketServer來負責接收請求,然後均勻傳送到後端某個Pod的埠上。這個過程預設採用Round Robin負載均衡演算法。
4.kube-proxy在執行過程中動態建立與Service相關的Iptables規則,這些規則實現了ClusterIp及NodePort的請求流量重定向到kube-proxy程式上對應服務的代理埠功能。
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.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2155433/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之五十:kubelet執行機制分析
- kubernetes實踐之五十四:垃圾回收機制
- kubernetes實踐之十三: 負載均衡機制Ingress負載
- kubernetes實踐之七:安全機制API Server認證之Service Account TokenAPIServer
- Java的執行機制分析!Java
- kubernetes實踐之四十九:Scheduler原理分析
- 分析.Net裡執行緒同步機制執行緒
- Kubernetes 入門實踐--部署執行 Go 專案Go
- kubernetes實踐之四十五:API Server原理分析APIServer
- 多執行緒之等待通知機制執行緒
- Kubernetes安裝之十:配置node節點之kube-proxy
- kubernetes實踐之十一:EFK
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- ConcurrentHashMap執行緒安全機制以及原始碼分析HashMap執行緒原始碼
- JavaScript執行機制JavaScript
- Javascript 執行機制JavaScript
- Java程式設計師從笨鳥到菜鳥(五十一) 徹底弄懂 JavaScript 的執行機制程式設計師JavaScript
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之五十八:CronJob
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之十九:API概述API
- kubernetes實踐之十七:架構架構
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- 理解Reacg執行機制
- 比特幣執行機制比特幣
- Js執行機制圖JS
- 探索JavaScript執行機制JavaScript
- requestAnimationFrame 執行機制探索requestAnimationFrame
- 執行緒同步機制執行緒
- js的執行機制JS
- kubernetes實踐之十:Kubernetes-dashboard+Heapster+InfluxDB+GrafanaUXGrafana
- kubernetes執行應用1之Deployment
- 一起分析執行緒的狀態及執行緒通訊機制執行緒
- kubernetes實踐之四十二:StatefulSet
- kubernetes實踐之六十四:CoreDNSDNS
- kubernetes實踐之五十六:雲原生