iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Kubernetes

從零開始的雲端實戰:30 天 Kubernetes 核心觀念與部署指南系列 第 3

【Day 03】K8s 的大腦與手腳:Control Plane 與 Worker Node 架構拆解

  • 分享至 

  • xImage
  •  

今日目標

  • 理解 Kubernetes 集群的整體架構與運作邏輯。
  • 搞懂 Control Plane(主控台 / 大腦)的核心組件與職責。
  • 掌握 Worker Node(工作節點 / 手腳)如何執行與管理容器。

K8s 集群的核心概念:大腦與手腳的分工

Kubernetes 採用典型的 Master-Worker(主從)架構。在 K8s 的世界裡,機器被分為兩大角色:

  1. Control Plane(控制平面 / Master Node):集群的「大腦」,負責決策、調度、監控整個集群的狀態。
  2. Worker Node(工作節點):集群的「手腳」,負責真正執行應用程式容器(Pods)。

當你下達指令「請幫我開 3 個 Nginx 服務」時,大腦會進行計算與派工,而手腳則負責把容器拉下來並跑起來。


Control Plane(控制平面)四大核心元件

Control Plane 是整個 K8s 的指揮中心,通常由以下四個元件組成:

1. kube-apiserver(集群的門面與總大廳)

  • 角色:K8s 的唯一入口。
  • 職責:所有外部指令(來自 kubectl CLI、Web UI 或 CI/CD)與內部元件的溝通,都必須透過 API Server。它負責對請求進行身份驗證(Authentication)、授權(Authorization)與格式檢查。

2. etcd(集群的神經記憶庫)

  • 角色:高可用、分散式的 Key-Value 資料庫。
  • 職責:儲存整個集群的所有狀態資料(如:目前有幾個 Pod、設定檔、 Secret 等)。K8s 遵循「無狀態」設計,所有狀態都只存在 etcd 中。

3. kube-scheduler(資源調度員)

  • 角色:算力分配大師。
  • 職責:當有新的 Pod 需要建立時,Scheduler 會評估各個 Worker Node 的剩餘 CPU/Memory 資源、標籤約束(Affinity)等條件,決定將 Pod 分配到哪一台最合適的 Worker Node 上。

4. kube-controller-manager(狀態總監)

  • 角色:自動化維護者。
  • 職責:運行各種 Controller(如 Node Controller、ReplicaSet Controller)。它的工作是持續進行「對照」:比較實際狀態(Current State)期望狀態(Desired State)。如果實際狀態不符(例如死掉了一個 Pod),它就會主動觸發修復動作。

Worker Node(工作節點)三大核心元件

Worker Node 是實體機或 VM,負責提供運算資源來執行應用程式,包含以下元件:

1. kubelet(節點的駐店經理)

  • 角色:Worker Node 上最關鍵的 Agent。
  • 職責:與 Control Plane 的 kube-apiserver 保持溝通。接收調度指令後,透過 Container Runtime 確保 Node 上的容器正常啟動與運作,並定期向大腦回報節點健康狀況。

2. kube-proxy(網路交通警察)

  • 角色:節點上的網路代理。
  • 職責:維護 Node 上的網路規則(利用 iptables 或 IPVS),負責轉發與流量調度,讓 Pod 之間或外部流量能順利通訊。

3. Container Runtime(容器執行環境)

  • 角色:真正跑容器的引擎。
  • 職責:負責拉取容器映像檔(Image)並啟動容器。符合 CRI(Container Runtime Interface)標準的引擎皆可使用,如 containerdCRI-O

實務運作流程:當你執行一個部署時發生了什麼?

想像你下達了指令 kubectl create deployment nginx

  1. 接受請求kubectl 將請求發給 kube-apiserver
  2. 寫入狀態kube-apiserver 驗證後,將「期望部署 Nginx」的資訊寫入 etcd
  3. 觸發控制kube-controller-manager 察覺到 etcd 的變更,發現少了一個 Nginx 實例,於是請求建立 Pod。
  4. 算力排程kube-scheduler 計算出最適合的 Worker Node(假設是 Node-01)。
  5. 通知執行kubelet(在 Node-01 上)收到 API Server 通知,命令 Container Runtime 拉取 Nginx 映像檔並啟動。
  6. 網路配置kube-proxy 設定網路路由,讓該 Pod 可以被存取。

本日小結

今天我們拆解了 K8s 的兩大核心部分:Control Plane 負責決策與維護期望狀態,Worker Node 負責接收指令並執行容器。

搞懂這套架構後,明天 Day 04 我們就要動手在本地建置實驗環境:「本地實驗場打造:使用 Minikube 建立第一個單節點 K8s 集群」


上一篇
【Day 02】環境演進史:從實體機、VM、Docker 到 K8s 解決了什麼問題?
下一篇
【Day 04】本地實驗場打造:使用 Minikube 建立第一個單節點 K8s 集群
系列文
從零開始的雲端實戰:30 天 Kubernetes 核心觀念與部署指南5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言