在 Kubernetes 叢集中,Controller Manager 是一個守護進程,負責實現 Kubernetes 的核心控制迴路。
控制迴路在自動化系統中非常重要,它們不斷地調節系統的狀態,確保系統的實際狀態與期望狀態保持一致。
監控共享狀態
每個控制器會通過 Kubernetes API 伺服器來監控叢集的共享狀態。
它會檢查叢集中資源的當前狀態,並與期望狀態進行比較。
進行更改
如果當前狀態與期望狀態不一致,控制器會嘗試進行調整。
例如,當 Pod 數量不足時,副本控制器會建立新的 Pod 來滿足期望數量。
重複運行
控制器管理器會不斷循環運行,持續監控和調整叢集的狀態。
這樣可以確保叢集始終保持在期望的狀態。
副本控制器(ReplicaSet Controller)
副本控制器負責確保叢集中有指定數量的 Pod 副本在運行。
當某些 Pod 出現故障或被刪除時,副本控制器會自動建立新的 Pod 來保持期望的副本數量。
這有助於確保應用程式的可用性和穩定性。
節點控制器(Node Controller)
節點控制器負責監控叢集中的節點狀態。
當節點出現故障或離線時,節點控制器會標記這些節點並處理相關的清理工作。
例如,它可能會重新調度受影響節點上的 Pod 以確保應用程式的持續運行。
命名空間控制器(Namespace Controller)
命名空間控制器負責管理 Kubernetes 叢集中的命名空間。
它監控命名空間的建立、更新和刪除操作,並確保命名空間的狀態與期望狀態保持一致。
這有助於組織和隔離叢集中的資源。
服務帳號控制器(Service Account Controller)
服務帳號控制器負責管理 Kubernetes 叢集中的服務帳號。
它會建立和管理服務帳號,並將其與相應的 Pod 和其他資源進行綁定。
服務帳號用於授予 Pod 訪問叢集資源的權限。
Cloud Controller Manager(CCM)是一個專門負責與雲服務提供商互動元件。
它負責處理雲端特定的操作,並確保 Kubernetes 叢集能夠在雲環境中順利運行。它的主要功能包括:
節點管理
Cloud Controller Manager 監控雲環境中的節點(如虛擬機)狀態,並將其更新到 Kubernetes 叢集中。當節點在雲中被建立、刪除或發生故障時,Cloud Controller Manager 會更新叢集中的節點資訊。
負載均衡器管理
在雲環境中,負載均衡器(Load Balancer)用於分發流量到不同的實例。Cloud Controller Manager 負責建立、更新和刪除雲端負載均衡器,並將其與 Kubernetes 服務對應起來,確保服務的可用性和擴展性。
存儲管理
Cloud Controller Manager 處理雲端存儲的建立和管理。例如,它可以在雲中建立持久卷(Persistent Volume)並將其與 Kubernetes 中的 PVC(Persistent Volume Claim)對應起來。
路由管理
在某些雲平台中,Cloud Controller Manager 負責管理雲端路由,以確保叢集中的網路流量能夠正確路由到相應的實例。
Cloud Controller Manager 的工作流程通常包括以下幾個步驟:
監控雲端資源
Cloud Controller Manager 會持續監控雲端資源的狀態,包括節點、負載均衡器、存儲等。它通過雲服務提供商的 API 來獲取這些資源的狀態資訊。
更新 Kubernetes 狀態
當雲端資源的狀態發生變化時,Cloud Controller Manager 會通過 Kubernetes API 更新叢集中的狀態。例如,當一個新的節點在雲中被建立時,Cloud Controller Manager 會將其加入到 Kubernetes 叢集中。
處理叢集操作
Cloud Controller Manager 會根據 Kubernetes 中的資源需求進行相應的雲端操作。例如,它會根據服務的要求建立或更新雲端負載均衡器,並將其與服務綁定。
錯誤處理和恢復
當發生錯誤或故障時,Cloud Controller Manager 會嘗試恢復正常狀態。例如,如果某個節點在雲中失效,Cloud Controller Manager 會標記該節點並重新調度 Pod。