在 Day 18 中,我們提到 Kubernetes 就像一個「自動化的社區物業管理公司」,幫助容器應用自動調度、伸縮與維護。那麼,這個龐大的系統是如何運作的呢?今天,我們將更深入了解 Kubernetes 的關鍵元件與其背後的運作原理。
Kubernetes 可以拆分為兩個主要部分:
控制平面是 Kubernetes 的指揮中心,包含以下元件:
API Server
Kubernetes 的「入口大門」。所有指令(kubectl 或其他 API 呼叫)都會先經過 API Server。
etcd
分散式鍵值資料庫,用來存放整個叢集的狀態,例如有哪些 Pod 正在執行。
(Pod 是最小的可部署單位,可以想像成是一個「運行應用程式的盒子」。)
Scheduler
「分配師傅」,負責決定 Pod 要在哪個節點上執行,考量資源使用、負載情況等。
Controller Manager
「自動巡檢員」,持續監控叢集狀態,確保實際情況與期望狀態一致。例如:如果一個 Pod 當掉了,就會自動建立新的 Pod 來補足。
每個工作節點就是實際運行應用程式的地方,包含:
Kubelet
節點上的代理程式,負責與 API Server 溝通,確保 Pod 運作正常。
Kube-proxy
節點的網路代理,處理 Pod 與 Pod 之間、Pod 與外部世界的流量轉送。
容器運行時(Container Runtime)
真正啟動容器的工具,例如 Docker、containerd。
在 Kubernetes 中,應用程式並不是直接部署在節點上,而是以 Pod 為最小單位。
Kubernetes 的運作方式基於 「宣告式(Declarative)」 而非 「指令式(Imperative)」。
換句話說,開發者定義「目標」,Kubernetes 幫你實現「過程」。
Kubernetes 不只是容器管理工具,而是一種以自動化與宣告式思維來驅動應用持續運行的關鍵力量,讓系統在雲端時代保持彈性與穩定。