Chuyển đến nội dung chính

第1課:Kubernetes 架構與核心元件

Control Plane 與 Worker Node。kube-apiserver、etcd、kube-scheduler、 controller-manager、kubelet、kube-proxy。Kubernetes 物件概覽。

Kubernetes 架構 — Control Plane 與 Worker Node 元件

1. Kubernetes 概覽

Kubernetes(K8s)是由 Google 開發的開源容器編排平台,於 2014 年捐贈給 CNCF。Kubernetes 自動化容器化應用程式的部署、擴展和管理。

考試重點: KCNA Domain 1 佔考試的 46%。題目常問「Which component is responsible for...」——需牢記每個元件的角色。

2. Kubernetes 架構

Kubernetes 叢集由兩種節點組成:Control Plane 與 Worker Node。

┌─────────────────────────────────────────────────────────┐
│                    CONTROL PLANE                        │
│  ┌──────────────┐  ┌─────────┐  ┌────────────────────┐ │
│  │ kube-apiserver│  │  etcd   │  │kube-controller-mgr │ │
│  │  (REST API)  │  │(DB key- │  │ - Node Controller  │ │
│  │  front door  │  │ value)  │  │ - ReplicaSet Ctrl  │ │
│  └──────────────┘  └─────────┘  │ - Endpoints Ctrl   │ │
│  ┌──────────────┐               └────────────────────┘ │
│  │kube-scheduler│                                       │
│  │ (assign node)│                                       │
│  └──────────────┘                                       │
└─────────────────────────────────────────────────────────┘
         │              │              │
┌────────▼──────┐ ┌─────▼──────┐ ┌───▼────────────┐
│  WORKER NODE 1│ │WORKER NODE 2│ │  WORKER NODE 3 │
│  ┌──────────┐ │ │ ┌────────┐ │ │  ┌──────────┐  │
│  │ kubelet  │ │ │ │kubelet │ │ │  │ kubelet  │  │
│  │kube-proxy│ │ │ │k-proxy │ │ │  │kube-proxy│  │
│  │ Pod Pod  │ │ │ │Pod Pod │ │ │  │ Pod Pod  │  │
│  └──────────┘ │ │ └────────┘ │ │  └──────────┘  │
└───────────────┘ └────────────┘ └────────────────┘

3. Control Plane 元件

元件角色考試關鍵詞
kube-apiserver叢集的唯一入口,處理 REST API。所有通訊都經過此元件。"single point of truth"、"REST API"、"authentication & authorization"
etcd儲存所有叢集狀態的 Key-Value 存儲。是 Kubernetes 的資料庫。"cluster state"、"consistent"、"distributed key-value"
kube-scheduler查看尚未分配節點的 Pod,並根據資源和約束條件選擇合適的節點。"schedule"、"assign node"、"resource fit"
kube-controller-manager執行多個控制器迴圈:Node、ReplicaSet、Endpoints、ServiceAccount 等。"reconciliation loop"、"desired state"、"controller"
cloud-controller-manager與雲端供應商 API(AWS、GCP、Azure)整合——選用。"cloud integration"、"LoadBalancer provisioning"

4. Worker Node 元件

元件角色考試關鍵詞
kubelet在每個節點上執行的代理程式,從 apiserver 接收 PodSpec 並確保容器正確執行。"node agent"、"PodSpec"、"container health"
kube-proxy為 Service 管理網路規則(iptables/IPVS)。允許網路流量到達 Pod。"networking"、"iptables"、"Service load balancing"
Container Runtime執行容器的軟體:containerd、CRI-O。Docker 已被棄用。"CRI"、"containerd"、"run containers"

考試重點: kubelet 是唯一不在容器中執行的元件——它是直接在節點上的 systemd 服務。如果 kubelet 崩潰,節點將變成 NotReady。

5. Kubernetes 基本物件

Kubernetes 中的一切都是 object——儲存在 etcd 中的宣告式資源。

物件描述範圍
Pod最小單位,包含 1+ 個容器共享網路和儲存Namespaced
Namespace虛擬叢集,隔離資源Cluster-wide
Node工作機器(VM 或實體機)Cluster-wide
Deployment管理無狀態應用副本與滾動更新Namespaced
ServicePod 的穩定網路端點Namespaced
ConfigMap / Secret組態設定資料Namespaced
PersistentVolume儲存資源Cluster-wide

6. 速查表 — 元件 → 職責

問題答案
叢集狀態儲存在哪裡?etcd
哪個元件為 Pod 選擇節點?kube-scheduler
哪個元件在每個 Worker 上執行並管理 Pod?kubelet
哪個元件處理所有 API 呼叫?kube-apiserver
哪個元件管理 Service 的網路規則?kube-proxy
哪個元件監視並協調期望狀態?kube-controller-manager

7. 練習題

Q1: 哪個 Kubernetes Control Plane 元件負責監視新建立但尚未分配節點的 Pod,並為它們選擇節點?

  • A) kube-apiserver
  • B) kube-scheduler ✓
  • C) kube-controller-manager
  • D) kubelet

解析:kube-scheduler 監視未排程的 Pod,並根據資源需求、親和性規則和約束條件將它們分配到合適的節點。

Q2: Kubernetes 將所有叢集組態設定和狀態儲存在哪裡?

  • A) kube-apiserver 記憶體
  • B) 每個節點的 /etc/kubernetes/
  • C) etcd ✓
  • D) kubelet 資料庫

解析:etcd 是一致性、高可用的 Key-Value 存儲,作為所有 Kubernetes 叢集資料的後端存儲。備份 etcd = 備份整個叢集。

Q3: Worker Node 上哪個元件負責確保 PodSpec 中描述的容器正在執行且健康?

  • A) kube-proxy
  • B) Container runtime
  • C) kubelet ✓
  • D) kube-controller-manager

解析:kubelet 是節點代理程式,從 kube-apiserver 接收 PodSpec 並確保所描述的容器正在執行。它將節點/Pod 狀態回報給 Control Plane。