Kubernetes核心組件運行機制

Kubernetes架構

Kubernets核心組件

  • API Server
  • Controller Manager
  • Scheduler
  • Kubelet
  • Kube-Proxy
  • Etcd

Kubernetes API Server原理解析

總體來看,Kubernetes API Server的核心功能是提供Kubernetes各類資源對象(如Pod、RC、Service等)的增、刪、改、查及Watch等HTTP Rest接口,成爲集羣內各個功能模塊之間數據交互和通信的中心樞紐,是整個系統的數據總線和數據中心。除此之外,它還有以下一些功能特性。
(1)是集羣管理的API入口。
(2)是資源配額控制的入口。
(3)提供了完備的集羣安全機制。

API Server架構

Controller Manager原理解析

Controller Manager內部包含ReplicationController、Node Controller、ResourceQuotaController、Namespace Controller、ServiceAccountController、Token Controller、Service Controller及Endpoint Controller這8種Controller,每種Controller都負責一種特定資源的控制流程,而Controller Manager正是這些Controller的核心管理者。

Controller Manager架構圖如下


Scheduler原理解析

Kubernetes Scheduler在整個系統中承擔了“承上啓下”的重要功能,“承上”是指它負責接收Controller Manager創建的新Pod,爲其安排一個落腳的“家”——目標Node;“啓下”是指安置工作完成後,目標Node上的kubelet服務進程接管後繼工作,負責Pod生命週期中的“下半生”。
具體來說,Kubernetes Scheduler的作用是將待調度的Pod(API新創建的Pod、Controller Manager爲補足副本而創建的Pod等)按照特定的調度算法和調度策略綁定(Binding)到集羣中某個合適的Node上,並將綁定信息寫入etcd中。在整個調度過程中涉及三個對象,分別是待調度Pod列表、可用Node列表,以及調度算法和策略。簡單地說,就是通過調度算法調度爲待調度Pod列表中的每個Pod從Node列表中選擇一個最適合的Node。
隨後,目標節點上的kubelet通過API Server監聽到KubernetesScheduler產生的Pod綁定事件,然後獲取對應的Pod清單,下載Image鏡像並啓動容器。
完整的流程圖如下:


Kubelet運行機制解析

在Kubernetes集羣中,在每個Node(又稱Minion)上都會啓動一個kubelet服務進程。該進程用於處理Master下發到本節點的任務,管理Pod及Pod中的容器。每個kubelet進程都會在APIServer上註冊節點自身的信息,定期向Master彙報節點資源的使用情況,並通過cAdvisor監控容器和節點資源。

Kube-proxy運行機制解析

起初,kube-proxy進程是一個真實的TCP/UDP代理,類似HAProxy,負責從Service到Pod的訪問流量的轉發,這種模式被稱爲userspace(用戶空間代理)模式。當某個Pod以Cluster IP方式訪問某個Service的時候,這個流量會被Pod所在本機的iptables轉發到本機的kube-proxy進程,然後由kube-proxy建立起到後端Pod的TCP/UDP連接,隨後將請求轉發到某個後端Pod上,並在這個過程中實現負載均衡功能。

Kubernetes從1.2版本開始,將iptables作爲kube-proxy的默認模式。iptables模式下的kube-proxy不再起到Proxy的作用,其核心功能:通過API Server的Watch接口實時跟蹤Service與Endpoint的變更信息,並更新對應的iptables規則,Client的請求流量則通過iptables的NAT機制“直接路由”到目標Pod。


Kubernetes從1.8版本開始引入第3代的IPVS(IP Virtual Server)模式。IPVS在Kubernetes 1.11中升級爲GA穩定版。iptables與IPVS雖然都是基於Netfilter實現的,但因爲定位不同,二者有着本質的差別:iptables是爲防火牆而設計的;IPVS則專門用於高性能負載均衡,並使用更高效的數據結構(Hash表),允許幾乎無限的規模擴張,因此被kube-proxy採納爲第三代模式。


參考資料

Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第4版)龔正等

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