《 Kubernetes進階實戰》一1.3.1Kubernetes集群組件
Kubernetes集群組件
一個典型的Kubernetes集群由多個工作節點(worker node)和一個集群控制平面(control plane,即Master),以及一個集群狀態存儲系統(etcd)組成。其中Master節點負責整個集群的管理工作,為集群提供管理接口,并監控和編排集群中的各個工作節點。各節點負責以Pod的形式運行容器,因此,各節點需要事先配置好容器運行依賴到的所有服務和資源,如容器運行時環境等。Kubernetes的系統架構如圖1-11所示。
Master節點主要由apiserver、controller-manager和scheduler三個組件,以及一個用于集群狀態存儲的etcd存儲服務組成,而每個Node節點則主要包含kubelet、kube-proxy及容器引擎(Docker是最為常用的實現)等組件。此外,完整的集群服務還依賴于一些附加組件,如KubeDNS等。
1.3.1 Master組件
Kubernetes的集群控制平面由多個組件組成,這些組件可統一運行于單一Master節點,也可以以多副本的方式同時運行于多個節點,以為Master提供高可用功能,甚至還可以運行于Kubernetes集群自身之上。Master主要包含以下幾個組件。
(1)API Server
API Server負責輸出RESTful風格的Kubernetes API,它是發往集群的所有REST操作命令的接入點,并負責接收、校驗并響應所有的REST請求,結果狀態被持久存儲于etcd中。因此,API Server是整個集群的網關。
(2)集群狀態存儲(Cluster State Store)
Kubernetes集群的所有狀態信息都需要持久存儲于存儲系統etcd中,不過,etcd是由CoreOS基于Raft協議開發的分布式鍵值存儲,可用于服務發現、共享配置以及一致性保障(如數據庫主節點選擇、分布式鎖等)。因此,etcd是獨立的服務組件,并不隸屬于Kubernetes集群自身。生產環境中應該以etcd集群的方式運行以確保其服務可用性。
etcd不僅能夠提供鍵值數據存儲,而且還為其提供了監聽(watch)機制,用于監聽和推送變更。Kubernetes集群系統中,etcd中的鍵值發生變化時會通知到API Server,并由其通過watch API向客戶端輸出。基于watch機制,Kubernetes集群的各組件實現了高效協同。
(3)控制器管理器(Controller Manager)
Kubernetes中,集群級別的大多數功能都是由幾個被稱為控制器的進程執行實現的,這幾個進程被集成于kube-controller-manager守護進程中。由控制器完成的功能主要包括生命周期功能和API業務邏輯,具體如下。
◆ ?? 生命周期功能:包括Namespace創建和生命周期、Event垃圾回收、Pod終止相關的垃圾回收、級聯垃圾回收及Node垃圾回收等。
◆ ?? API業務邏輯:例如,由ReplicaSet執行的Pod擴展等。
(4)調度器(Scheduler)
Kubernetes是用于部署和管理大規模容器應用的平臺,根據集群規模的不同,其托管運行的容器很可能會數以千計甚至更多。API Server確認Pod對象的創建請求之后,便需要由Scheduler根據集群內各節點的可用資源狀態,以及要運行的容器的資源需求做出調度決策,其工作邏輯如圖1-12所示。另外,Kubernetes還支持用戶自定義調度器。
Kubernetes API
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。