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 能直接存取