kubernetes核心組件kube-proxy

一.  kube-proxy 和 service 

kube-proxy是Kubernetes的核心組件,部署在每個Node節點上,它是實現Kubernetes Service的通信與負載均衡機制的重要組件; kube-proxy負責爲Pod創建代理服務,從apiserver獲取所有server信息,並根據server信息創建代理服務,實現server到Pod的請求路由和轉發,從而實現K8s層級的虛擬轉發網絡。

在k8s中,提供相同服務的一組pod可以抽象成一個service,通過service提供的統一入口對外提供服務,每個service都有一個虛擬IP地址(VIP)和端口號供客戶端訪問。kube-proxy存在於各個node節點上,主要用於Service功能的實現,具體來說,就是實現集羣內的客戶端pod訪問service,或者是集羣外的主機通過NodePort等方式訪問service。在當前版本的k8s中,kube-proxy默認使用的是iptables模式,通過各個node節點上的iptables規則來實現service的負載均衡,但是隨着service數量的增大,iptables模式由於線性查找匹配、全量更新等特點,其性能會顯著下降。從k8s的1.8版本開始,kube-proxy引入了IPVS模式,IPVS模式與iptables同樣基於Netfilter,但是採用的hash表,因此當service數量達到一定規模時,hash查表的速度優勢就會顯現出來,從而提高service的服務性能。

kube-proxy負責爲Service提供cluster內部的服務發現和負載均衡,它運行在每個Node計算節點上,負責Pod網絡代理, 它會定時從etcd服務獲取到service信息來做相應的策略,維護網絡規則和四層負載均衡工作。在K8s集羣中微服務的負載均衡是由Kube-proxy實現的,它是K8s集羣內部的負載均衡器,也是一個分佈式代理服務器,在K8s的每個節點上都有一個,這一設計體現了它的伸縮性優勢,需要訪問服務的節點越多,提供負載均衡能力的Kube-proxy就越多,高可用節點也隨之增多。

service是一組pod的服務抽象,相當於一組pod的LB,負責將請求分發給對應的pod。service會爲這個LB提供一個IP,一般稱爲cluster IP。kube-proxy的作用主要是負責service的實現,具體來說,就是實現了內部從pod到service和外部的從node port向service的訪問。

簡單來說: 
->  kube-proxy其實就是管理service的訪問入口,包括集羣內Pod到Service的訪問和集羣外訪問service。
->  kube-proxy管理sevice的Endpoints,該service對外暴露一個Virtual IP,也成爲Cluster IP, 集羣內通過訪問這個Cluster IP:Port就能訪問到集羣內對應的serivce下的Pod。
->  service是通過Selector選擇的一組Pods的服務抽象,其實就是一個微服務,提供了服務的LB和反向代理的能力,而kube-proxy的主要作用就是負責service的實現。
->  service另外一個重要作用是,一個服務後端的Pods可能會隨着生存滅亡而發生IP的改變,service的出現,給服務提供了一個固定的IP,而無視後端Endpoint的變化。

 

 

參考 https://www.cnblogs.com/fuyuteng/p/11598768.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章