Kubernetes – 架構

透過 Minikube 官網的實踐教學,往往不足夠有基礎對於 Kubernetes 操作,還是需要把 K8s 的內功學好,把底打穩才有辦法操作後續的高難度應用。

Minikuber 基礎操作 連結1連結2

本文介紹以下– 圖片參考

Worker-Node

worker 主要運行應用程式與服務,其為了提供服務 Kubernetes 每個 Node 都會包含三組件

  • Kubelet
  • kube-proxy
  • container-runtime

Container Runtime

容器運行時是 Kubernetes 叢集的核心元件,負責管理和運作。理解容器運行時的工作原理之一對於 Kubernetes 叢集的運維和故障排查至關重要。

基本功能

  • 容器生命週期管理:建立、啟動、停止和刪除容器
  • 鏡像管理:拉取、儲存和管理容器
  • 資源隔離:提供CPU、記憶體、IO等資源的隔離
  • 運作環境:提供容器運行環境

Kubelet

Kubelet 是 Kubernetes 叢集中運行在每個工作節點(Node)上的元件核心,負責管理 Pod 和容器的生命週期,是 Kubernetes 節點代理程式。

基本功能

  • Pod管理:接收並執行PodSpecs,確保所描述的容器正常運作
  • 貨櫃健康檢查:執行 liveness 和 readiness 標誌
  • 資源監控:報告節點和Pod的資源使用情況
  • 容器運行時互動:透過CRI(容器運行時介面)與容器運行時通訊
  • 磁碟區管理:掛載和卸載Pod所需的儲存卷
  • 節點狀態報告:定期向API Server 節點狀態報告

Kube-proxy

kube-proxy 是 Kubernetes 叢集中實作服務(Service)網路功能的元件核心,運行在每個節點(Node)上,維護負責節點上的網路規則,實現服務抽象化和負載平衡。

基本功能

  • 服務抽象:將服務的虛擬IP(ClusterIP)對應到Pod
  • 負載平衡:在多個Pod端點(Endpoint)間流量分配
  • 網路規則管理:設定 iptables/IPVS 規則實現流量轉發
  • 服務發現:監聽API Server變化,即時更新轉送規則

Master-Node

Master是叢集的“CPU”,負責全域決策和叢集管理。

API Server

  • 集群的唯一入口
  • 提供集群的 API 接口服務 ( 所有組件都會通過這個接口來進行通信)
  • 處理所有資源作業的認證、授權和驗證
  • 可以透過 kubectl 進行通信
    • 比如一些 CRUD Pod 的 request 都會先經過 API server 再轉發到各個 Pod 中

Scheduler

  • 負責 Pod 的調度決策
  • 根據資源需求、策略等選擇合適節點
  • 觀察 Pod 使用的資源狀況 決定 新建立的 Pod 會被建立到哪裡去
    • 這個例子會在 20 % 這邊
    • 更加合理的利用集群中的各種資源

Controller Manager

  • 負責管理集群中各種資源對象的狀態
    • 集群中假設有任何一個 Node 發生故障的時候,有一個機制可以監控和檢測這個故障
    • 盡可能快速地對這個故障進行處理 如: 重新啟動、用其他 Pod 進行代替
  • 運行各種控制器
  • 包括節點控制器、副本控制器、端點控制器等
  • 確保集群狀態與期望狀態一致

etcd

  • 用來存集群豬所有物件資源的狀態資訊
  • 分散式鍵值存儲
  • 保存整個集群的狀態數據
  • 唯一有狀態的控制平面組件
    • 如新增一個 Pod 刪除一個 Pod 都會被存在 etcd 中