K8S組件最全詳解(九大組件原理圖解)
K8S
Kubernetes(簡稱K8s),是一個開源的容器編排平臺,用于自動化部署、擴展和管理容器化應用程序。
K8S誕生于Google,基于其多年在生產環境中運行容器的經驗,現已成為現代微服務架構、和云原生應用的核心技術。
圖片
K8S通過管理容器的生命周期,確保系統在大規模的生產環境中,可以高效穩定地運行。
K8S組件
k8s采用主從架構,其中集群中的所有節點都由控制平面管理、和調度。
如下圖所示:
圖片
K8S組件,主要會包含兩大最核心的組件:控制平面(Control Plane)、工作節點(Worker Nodes)。
控制平面(Control Plane):負責管理整個集群的狀態,調度任務,監控集群正常運行;
工作節點(Worker Nodes):運行實際的應用容器,負責:容器的運行、和管理。
如果你想掌握好K8s,最核心的就是掌握好:控制平面(Control Plane)和工作節點(Worker Nodes)。
下面,我就分別詳解:控制平面(Control Plane)和工作節點(Worker Nodes)@mikechen
控制平面組件
控制平面:負責管理 Kubernetes 集群中的所有節點、和 Pod。
它由以下組件組成,重點關注下圖的“黃色框”:
圖片
“黃色框”會涉及到如下組件:API Server、Scheduler、Controller...等核心組件。
API Server
API Server:它是集群的入口,類似微服務網關這樣,所有操作必須通過 API Server。
負責接收來自用戶、和其他組件的請求,并通過 REST API 提供集群管理功能。
Controller Manager
Controller Manager :是集群管理中的重要組件,它負責確保集群的實際狀態與期望狀態的一致性。
Controller Manager,是由多個控制器組成,每個控制器負責處理集群中的一種或、多種資源對象的狀態管理。
如下圖所示:
圖片
每個控制器負責:特定類型的資源、或功能。
常見的控制器包括:
- Deployment Controller:管理無狀態應用的部署,包括“處理副本的創建、更新和滾動升級;
- StatefulSet Controller:管理有狀態應用的部署,適合需要持久化存儲、和有序部署的應用(如:數據庫);
- ReplicaSet Controller:確保指定數量的 Pod 副本始終運行,用于確保 Pod 副本數目符合期望;
- Job Controller:Job 可以創建多個 Pod,并在成功完成任務后終止 Pod;
- CronJob Controller:類似于 Linux 的 Cron 任務,它會在指定的時間間隔內創建 Job 實例;
- DaemonSet Controller:確保每個節點上都有一個 Pod 實例,適合需要在每個節點上運行的服務,如:日志收集器、監控代理...等;
- Namespace Controller:管理命名空間的生命周期,包括:創建/和刪除命名空間,以及相關資源的清理。
總之,控制器的設計使得 K8S,能夠在大規模環境中自動化管理容器、和服務。
Scheduler
負責根據調度策略(如:資源使用率、親和性...等),將新創建的 Pod 分配到合適的節點上。
比如:通過 CPU、內存、GPU ...等資源的要求,Scheduler 確保節點有足夠的可用資源來滿足 Pod 的需求。
并且,通過調度策略,比如:公平調度、優先級...等,確保資源的合理分配和高效利用。
etcd
分布式鍵值存儲系統,用于保存集群的所有配置信息、和狀態數據。
etcd,重點保證數據的一致性、和持久性。
以及,提供集群狀態的快速讀取、和修改能力。
工作節點的組件
工作節點組件:運行實際的應用容器,負責:容器的執行、和管理。
每個工作節點,包含以下“綠色框”所示組件:
圖片
工作節點是運行實際應用程序的地方,它接收 API Server 的調度指令并運行 Pod。
工作節點上的核心組件包括:
Kubelet
每個節點上的代理,負責確保 Pod 正常運行。
Pod是 K8S中最小的可部署單元,通常由一個、或多個緊密耦合的容器組成。
如下圖所示:
圖片
Pod 是 Kubernetes 中的基本構建塊,提供了容器的封裝、和管理功能。
它們可以包含一個、或多個容器,這些容器共享:網絡、存儲資源,并在同一個環境中運行。
當創建一個 Pod 時,K8S調度器,會將 Pod 調度到合適的工作節點上。
調度器根據資源需求、節點的負載、和調度策略來選擇節點。
一旦 Pod 被調度到節點上,kubelet 在節點上啟動并運行 Pod 中的容器。
Kube-proxy
網絡代理,管理網絡規則,確保容器、和服務之間的網絡通信。
比如:使用 iptables 、或 ipvs 維護網絡規則,將流量轉發到相應的 Pods。
容器運行時
負責運行容器,如:Docker、containerd 等。
主要復制:拉取容器鏡像,創建、和運行容器。
以及,提供容器的生命周期管理,如:啟動、停止和監控容器...等等。
總之,K8S的控制平面、和工作節點是集群正常運行的核心,通過這兩部分的協同工作,K8S才能夠實現高效的容器編排、管理、和自動化運維。