在 Kubernetes(K8S)叢集中,主節點(Master Node)扮演著至關重要的角色。主節點負責叢集的整體管理和協調工作。以下是主節點的一些關鍵作用:
-
叢集狀態管理:
- 主節點負責維護整個叢集的狀態資訊。這些資訊儲存在 etcd 資料庫中,包括節點列表、Pods、Services、ConfigMaps、Secrets 等所有 Kubernetes 物件的狀態。
-
API 伺服器:
- API Server 是主節點上的一個核心元件,它提供了一個 RESTful API 介面,使得客戶端和其他叢集元件可以與叢集進行互動。API Server 是叢集中所有物件的唯一權威來源,所有的讀寫操作都是透過 API Server 進行的。
-
控制器管理器(Controller Manager):
- Controller Manager 包含了一組後臺程序,這些程序負責監控叢集狀態,並根據預定義的邏輯進行調整。控制器的例子包括 ReplicaSet 控制器、Deployment 控制器、StatefulSet 控制器等。
-
排程器(Scheduler):
- Scheduler 負責決定叢集中的哪些節點應該執行哪些 Pod。當一個 Pod 建立後但還沒有分配到任何節點上時,它被稱為“待排程”狀態。Scheduler 就是負責將這樣的 Pod 分配到合適的節點上。
-
認證和授權:
- 主節點還負責處理叢集使用者的認證和授權,確保只有授權使用者才能執行特定的操作。
-
事件記錄:
- 主節點記錄叢集中的重要事件,如 Pod 的建立、刪除或其他重要變化,這些事件可以幫助管理員瞭解叢集的執行狀況。
-
網路配置:
- 雖然網路配置通常是叢集範圍的,但主節點通常會配置一些全域性網路引數,如 Service 型別的服務如何對外暴露。
綜上所述,由於主節點的重要性,通常會在叢集中設定多個主節點(稱為高可用 Master 或 HA Master)以避免單點故障。這樣做的目的是確保即使某個主節點發生故障,叢集仍然可以繼續運作。此外,對於大規模叢集,可能還會採用 Master 節點的角色分離,即將某些任務分配給專門的 Master 節點,以減輕單一節點的壓力並提高效能。