前言
Kubernetes 是當今最主流的容器編排平台,由 Google 開發並交由 CNCF 維護。本文以圖解方式,從控制平面到工作節點、從網路模型到儲存架構,帶你完整理解 Kubernetes 的核心架構。
控制平面(Control Plane)組件
Kube-APIServer
控制平面的核心入口,負責處理所有 REST 操作、身份驗證與授權。所有元件和節點都透過它來存取和更新叢集狀態。
Etcd
分散式鍵值儲存系統,儲存叢集所有狀態資料(Pod、Service、ConfigMap、Secret 等),透過分散式架構確保高可用與一致性。
Kube-Scheduler
負責將新建立的 Pod 調度到適當的工作節點,支援資源優先、親和性、反親和性等多種調度策略。
Kube-Controller-Manager
管理各種控制器(Node Controller、Replication Controller、Endpoint Controller 等),透過監聽叢集狀態變化自動執行操作。
Cloud-Controller-Manager
整合底層雲端平台(AWS、GCP、Azure),抽象化差異使 Kubernetes 可在多雲環境無縫運作。
工作節點(Worker Node)組件
Kubelet
運行在每個節點上的代理程式,負責啟動/停止 Pod、監控狀態,並定期向 APIServer 回報心跳和狀態。
Kube-Proxy
網路代理服務,透過 iptables 或 IPVS 維護網路規則,實現 Service 的服務發現與負載平衡。
Container Runtime
容器執行環境(Docker、containerd、CRI-O),透過 CRI 介面與 Kubelet 互動,負責容器的啟動、停止和映像管理。
Kubernetes 網路模型
Pod 網路
- 每個 Pod 擁有唯一 IP,叢集內可直接通訊
- Pod 間不需 NAT
- 透過 CNI 外掛(Flannel、Calico、Weave)實現
Service 網路
- Service 提供虛擬 IP(ClusterIP)暴露一組 Pod
- 透過 DNS 解析實現服務發現
- 自動負載平衡分發請求
NetworkPolicy
基於標籤的網路策略,可定義允許/拒絕的 Pod 通訊規則,實現網路層級的存取控制與隔離。
Kubernetes 儲存架構
Volume(卷)
與 Pod 生命週期相關的儲存,常見類型:
- emptyDir:暫存資料,Pod 刪除即消失
- hostPath:掛載宿主機目錄
- nfs:多 Pod 共享的網路檔案系統
- configMap / secret:注入設定與敏感資料
PersistentVolume(PV)與 PVC
PV 是叢集層級的儲存資源,獨立於 Pod 生命週期。PVC 是使用者請求儲存的方式:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
StorageClass
動態供應 PV 的機制,根據 PVC 請求自動建立儲存資源,支援不同儲存後端(SSD、HDD、雲端儲存等)。
安全機制
- 身份認證:X.509 憑證、靜態 Token、Service Account、外部認證(OAuth/LDAP)
- 授權:RBAC(最常用)、ABAC、節點授權
- 網路安全:NetworkPolicy、TLS 加密
- 密鑰管理:Secret 物件 + etcd 加密
調度策略
- 資源請求與限制:CPU/記憶體
- Node Selector:標籤選擇節點
- Affinity/Anti-Affinity:親和/反親和關係
- Taints/Tolerations:污點與容忍度
應用管理
- Deployment:無狀態應用,支援滾動更新與回滾
- StatefulSet:有狀態應用,穩定網路標識與持久儲存
- DaemonSet:每節點一個 Pod(日誌、監控)
- Job / CronJob:一次性任務與定時任務
總結
Kubernetes 架構涵蓋了控制平面、工作節點、網路模型、儲存系統、安全機制、調度策略與應用管理等核心面向。理解這些組件之間的協作關係,是高效運維 Kubernetes 叢集的基礎。無論你是初學者還是有經驗的工程師,定期回顧架構全貌都有助於更好地排查問題和優化叢集。

發佈留言