Kubernetes 採用典型的 Master-Worker(主從)架構。在 K8s 的世界裡,機器被分為兩大角色:
當你下達指令「請幫我開 3 個 Nginx 服務」時,大腦會進行計算與派工,而手腳則負責把容器拉下來並跑起來。
Control Plane 是整個 K8s 的指揮中心,通常由以下四個元件組成:
kube-apiserver(集群的門面與總大廳)kubectl CLI、Web UI 或 CI/CD)與內部元件的溝通,都必須透過 API Server。它負責對請求進行身份驗證(Authentication)、授權(Authorization)與格式檢查。etcd(集群的神經記憶庫)etcd 中。kube-scheduler(資源調度員)kube-controller-manager(狀態總監)Worker Node 是實體機或 VM,負責提供運算資源來執行應用程式,包含以下元件:
kubelet(節點的駐店經理)kube-apiserver 保持溝通。接收調度指令後,透過 Container Runtime 確保 Node 上的容器正常啟動與運作,並定期向大腦回報節點健康狀況。kube-proxy(網路交通警察)Container Runtime(容器執行環境)containerd 或 CRI-O。想像你下達了指令 kubectl create deployment nginx:
kubectl 將請求發給 kube-apiserver。kube-apiserver 驗證後,將「期望部署 Nginx」的資訊寫入 etcd。kube-controller-manager 察覺到 etcd 的變更,發現少了一個 Nginx 實例,於是請求建立 Pod。kube-scheduler 計算出最適合的 Worker Node(假設是 Node-01)。kubelet(在 Node-01 上)收到 API Server 通知,命令 Container Runtime 拉取 Nginx 映像檔並啟動。kube-proxy 設定網路路由,讓該 Pod 可以被存取。今天我們拆解了 K8s 的兩大核心部分:Control Plane 負責決策與維護期望狀態,Worker Node 負責接收指令並執行容器。
搞懂這套架構後,明天 Day 04 我們就要動手在本地建置實驗環境:「本地實驗場打造:使用 Minikube 建立第一個單節點 K8s 集群」!