`從這段文字中總結出 Kubernetes 叢集控制平面的主要元件`。
Kubernetes定義了一組構建塊（「原語」），這些構建塊共同提供了基於CPU、記憶體或自定義指標部署、維護和擴充套件應用程式的機制。Kubernetes鬆散耦合且可擴充套件，以滿足不同的工作負載。內部元件以及在Kubernetes上執行的擴充套件和容器都依賴於Kubernetes API。該平臺透過將資源定義為對像來控制計算和儲存資源，然後可以將其作為這樣的物件進行管理。

Kubernetes遵循主/副本架構。Kubernetes的元件可以分為管理單個節點的元件和作為控制平面的元件。

控制平面
Kubernetes主節點處理叢集的Kubernetes控制平面，管理其工作負載並在系統中指導通訊。Kubernetes控制平面由各種元件組成，每個元件都是自己的程式，可以在單個主節點上執行，也可以在支援高可用性叢集的多個主節點上執行。Kubernetes控制平面的各個元件如下：

etcd是CoreOS開發的持久、輕量級、分散式、鍵值資料儲存。它可靠地儲存叢集的配置資料，表示叢集在任何給定時間點的整體狀態。在網路分割槽的情況下，etcd更偏向於一致性而不是可用性（參見CAP定理）。一致性對於正確地排程和操作服務至關重要。
API伺服器使用JSON over HTTP提供Kubernetes API，為Kubernetes提供內部和外部介面。API伺服器處理和驗證REST請求，並在etcd中更新API物件的狀態，從而允許客戶端在工作節點上配置工作負載和容器。API伺服器使用etcd的watch API監視叢集，推出關鍵配置更改或將叢集狀態的任何分歧恢復回到部署者宣告的狀態。例如，部署者可以指定需要執行特定「pod」的三個例項。etcd儲存這個事實。如果部署控制器發現只有兩個例項正在執行（與etcd宣告衝突），它會安排建立該pod的另一個例項。
排程器是可擴充套件的元件，根據資源可用性選擇未排程的pod（排程器管理的基本實體）在哪個節點上執行。排程器跟蹤每個節點上的資源使用情況，以確保工作負載不超過可用資源。為此，排程器必須瞭解資源需求、資源可用性以及其他使用者提供的約束或策略指令，例如服務質量、親和力與反親和力要求和資料區域性性。排程器的作用是將資源「供應」與工作負載「需求」匹配。
控制器是一個協調迴圈，將實際的叢集狀態推向所需的狀態，與API伺服器通訊以建立、更新和刪除它管理的資源（例如pod或服務端點）。一種控制器是複製控制器，它透過在叢集中執行指定數量的pod副本來處理複製和擴充套件。它還處理如果底層節點失敗，則建立替換pod。作為核心Kubernetes系統的其他控制器包括DaemonSet控制器，用於在每臺機器上執行一個pod（或某些機器的子集），以及Job控制器，用於執行執行到完成的pod（例如作為批處理作業的一部分）。控制器定義中的標籤選擇器指定控制器管理的pod集合。
控制器管理器是管理一組核心Kubernetes控制器的程式。
kubernetes 叢集控制平面執行在多一個主節點上。其組成部分是：
1. etcd - 包含叢集配置資料的鍵值資料儲存。
2. api-server是服務並更新kubernetes叢集狀態的伺服器。它監視 etcd 並使叢集的實際狀態與其所需狀態保持同步。
3. 排程程式是一個元件，它根據每個 Pod 的需求以及叢集中的節點可以支援的內容，選擇未排程的 Pod 應在哪個節點上執行。
4. 控制器管理器管理多個控制器，使叢集與其所需狀態保持同步。