Kubernetes 控制元件介紹
Kubernetes 控制元件介紹
在 Kubernetes 中,我們需要控制平面 (Control Plane) 來管理 Node 的運行狀態。接下來我們將介紹 Node 是如何被管理的,以及各個控制元件的功能。
整體架構概述
Kubernetes 採用 Master-Worker 架構模式:
- Control Plane (Master): 負責管理整個叢集的決策和控制
- Worker Nodes: 負責執行實際的應用程式工作負載
Node Components
Node Components 是每個 Worker Node 必須具備的核心元件:
- Container Runtime: 負責管理容器的生命週期,包括容器的建立、執行和銷毀
- kubelet: 作為 Node 的代理程式,負責建立 Pod 並維護容器的健康狀態
- kube-proxy: 負責處理 Node 的網路代理功能,實現服務發現和負載平衡
Control Plane Components
控制平面負責管理整個 Kubernetes 叢集中所有的 Node Components。以下是控制平面的核心元件:
- kube-api-server: 作為 Kubernetes API 的前端,負責處理來自客戶端的請求,經過驗證和授權後,將請求轉發給對應的元件
- kube-scheduler: 負責將 Pod 調度到適合的 Node 上執行,會根據資源可用性、硬體需求等條件來選擇最佳的 Node
- kube-controller-manager: 執行各種控制器,負責監控 Kubernetes 叢集的狀態變化並確保達到期望狀態
- etcd: 分散式的 key-value 儲存系統,用來儲存 Kubernetes 叢集的所有配置資料和狀態資訊
- cloud-controller-manager: 負責與雲端服務提供商進行整合的元件,它可以幫助 Kubernetes 連接公有雲平台,使用雲端服務的 API 來管理雲端資源
提示
etcd 採用分散式架構設計,因此在一個 Kubernetes 叢集中可以同時部署多個 Control Plane 元件來實現高可用性
提示
cloud-controller-manager 僅在雲端環境中才會部署,如果 Kubernetes 叢集運行在本地環境則不會包含此元件(例如:minikube)
為了確保服務的高可用性,生產環境的 Kubernetes 通常會部署兩個以上的 Control Plane 節點。
元件間的通訊機制
所有元件之間的通訊都必須透過 kube-api-server 進行,它是整個 Kubernetes 架構的核心通訊樞紐:
- kubelet 透過 API Server 回報 Node 和 Pod 的狀態
- Controller Manager 透過 API Server 監控叢集狀態
- Scheduler 透過 API Server 獲取調度資訊並做出調度決策
- 所有配置和狀態資料都儲存在 etcd 中,只有 API Server 能直接存取