想象一下,你面對一個複雜的分佈式系統,它能自動管理成千上萬個容器,卻像一台精密儀器般運轉自如。但如果核心組件出現故障,整個系統會瞬間癱瘓——這正是 Kubernetes 的魅力與挑戰。本文將帶你深入 Kubernetes 的架構框架,層層拆解控制平面與節點組件,幫助你構建專業認知框架。無論你是初學者還是運維專家,這份指南都能讓你在實際操作中游刃有餘。

Kubernetes架構簡介_#平面

1. Kubernetes 架構概述

Kubernetes(簡稱 K8s)是一個開源的容器編排平台,設計用於自動化部署、擴展和管理容器化應用。其架構採用主從模型:控制平面(Control Plane)負責決策和狀態管理,工作節點(Worker Nodes)執行實際任務。根據最新2025年資料,K8s 強調高可用性和可擴展性,支持多雲和混合環境部署。

核心框架:

  • 控制平面:集羣大腦,管理整體狀態。
  • 工作節點:執行容器運行。
  • 關鍵交互:通過 API Server 實現組件間通信。

2. 控制平面組件詳解

控制平面是 K8s 的指揮中心,通常部署在 Master 節點上。以下表格從功能、要點和故障角度專業剖析每個組件:

組件

一句話記憶

深度要點

故障徵兆

kube-apiserver

唯一入口,RESTful API 網關

所有組件和客户端(如 kubectl)僅通過它交互;內置鑑權鏈(認證→授權→准入控制);支持水平擴展,前端負載均衡器確保高可用。

集羣“假死”:kubectl 命令報錯,無法連接服務器。

etcd

集羣“賬本”,分佈式 KV 存儲

使用 Raft 協議確保強一致性,通常部署奇數節點(3/5/7);存儲所有資源狀態(如 Pod、ConfigMap);支持定期快照和壓縮以優化性能。

API Server 超時;集羣無法創建或更新資源。

kube-scheduler

Pod“HR”,負責資源分配

調度流程:過濾節點 → 打分排序 → 綁定 Pod;考慮因素包括資源利用、親和性、污點;可自定義擴展(Scheduler Framework)。

Pod 長期處於 Pending 狀態,事件顯示無可用節點。

kube-controller-manager

集羣“自動糾偏中心”

集成多個控制器(如 Deployment、Node);持續調諧實際狀態至期望狀態;支持 Leader Election 防止衝突。

副本數異常;Node 狀態未知;Endpoint 丟失。

cloud-controller-manager(可選)

雲廠商“翻譯官”

將 K8s 事件轉換為雲 API 調用(如負載均衡);解耦核心邏輯,支持多雲環境。

雲資源(如外部 IP)無法自動 provision。

這些組件協同工作,確保集羣狀態一致。根據2025年更新,etcd 性能優化已成為焦點,推薦使用 SSD 存儲以提升 I/O 速度。


3. 工作節點組件詳解

工作節點是 K8s 的執行層,每個節點運行以下組件,負責容器生命週期管理:

組件

一句話記憶

深度要點

故障徵兆

kubelet

Pod“小隊長”

監聽 Pod 規範,通過 CRI 創建容器;彙報節點狀態;內置探針(Liveness、Readiness、Startup)。

節點 NotReady;Pod 卡在 ContainerCreating。

kube-proxy

Service“四層負載均衡”

模式:iptables(默認)或 IPVS(高性能);維護流量規則,支持會話親和。

Service 訪問超時;ClusterIP 無法路由。

容器運行時(CRI)

容器引擎

推薦 containerd 或 CRI-O;實現鏡像拉取、容器執行等接口;Docker 已棄用。

鏡像拉取失敗;運行時崩潰導致 Pod 錯誤。

節點組件強調本地自治,2025年趨勢是集成更多安全特性,如 webhook 鑑權。

Kubernetes架構簡介_#架構_02


4. 組件交互流程(以創建 Pod 為例)

理解流程有助於調試。以下是簡化的步驟:

  1. 用户通過 kubectl apply 提交 Deployment → API Server 驗證並存入 etcd。
  2. Deployment Controller 檢測變化 → 創建 ReplicaSet 和 Pod 清單。
  3. Scheduler 過濾並綁定 Pod 到節點。
  4. Kubelet 在節點上拉取鏡像、啓動容器,並進行健康檢查。
  5. Kube-proxy 更新路由規則,使 Service 可達。

這個流程體現了 K8s 的聲明式設計:描述期望狀態,系統自動調諧。


5. 高頻面試問題與解答

基於專業框架,以下是常見追問點:

問題

關鍵詞解答

etcd 能否使用偶數節點?

不推薦;Raft 需要過半投票,奇數節點(如3/5)提供更好容錯。

kubelet 與 API Server 通信如何安全?

使用 HTTPS 和雙向 TLS 認證;證書自動輪轉。

Scheduler 如何自定義?

通過 Scheduler Framework 在擴展點插入插件。

IPVS 比 iptables 優勢?

O(1) 規則查找;支持更多調度算法;適合大規模 Service。

運行時崩潰後果?

節點 NotReady;Pod 被驅逐(若啓用污點)。


6. 架構腦圖(文本版)

Kubernetes 集羣
├── 控制平面 (Master Nodes)
│   ├── kube-apiserver   ← 暴露 API,負載均衡
│   ├── etcd             ← 分佈式存儲,Raft 一致性
│   ├── kube-scheduler   ← Pod 調度
│   ├── kube-controller-manager ← 狀態調諧
│   └── cloud-controller-manager ← 雲集成(可選)
└── 工作節點 (Worker Nodes)
    ├── kubelet          ← 容器管理
    ├── kube-proxy       ← 網絡代理
    └── 容器運行時       ← containerd 等

這個腦圖便於記憶,建議打印並反覆審視。