K8S工作原理詳解(圖文全面總結)
K8S
Kubernetes(簡稱 K8S)是一個用于管理容器化應用的平臺,由“ Google” 開發并于 2014 年開源。
K8S 能夠幫助開發者、和運維人員,自動化應用的部署、擴展、和管理,適用于構建云原生應用。
圖片
K8S ,能自動將容器化應用,分配到合適的節點(服務器)上,通過自動調度來確保資源合理分配,最大化資源利用率。
K8S 適合,管理由多個小服務組成的微服務架構,提供自動擴展、自愈、和負載均衡,保證服務的高可用性、和彈性伸縮..等場景。
K8S工作原理
K8S 是一個分布式系統,主要由 Master 節點(主節點)、和Node節點(工作節點)**組成:
如下圖所示:
圖片
Master 節點負責:整個集群的管理、和調度,而 Node 節點則負責運行應用容器,這是K8S的大致分工。
Master 節點
Master,負責管理整個集群的控制、和調度,決定哪些應用實例部署在 Node 上。
Master,主要包含以下組件:
API Server
APIServer,負責:接收用戶的請求,并將請求轉化為操作指令交由后端的其他組件執行。
圖片
API Server 是集群的入口,所有對 K8S 的操作,如:資源創建、修改、刪除...等,都是通過 HTTP 請求與 API Server 交互的。
所有組件都通過 API Server 通信,確保系統的統一性、和安全性,有點類似“微服務網關”的角色。
etcd
etcd,是分布式鍵值存儲數據庫,用于保存集群狀態信息。
API Server 是 K8S 集群的“控制中心”,與 etcd 進行交互以保存、和檢索集群的配置信息、和狀態數據。
etcd,會存儲:配置信息、Pod 狀態、Service 配置...等,所有的配置信息都存儲在 etcd 中。
etcd 使用 Raft 協議保證數據一致性,確保即使在集群部分節點失效時,etcd 中的數據依然是可靠的。
Scheduler
調度器,負責:將新創建的 Pod 分配到合適的 Node 節點上。
Scheduler 根據資源使用情況,比如:(CPU、內存等)、拓撲信息(網絡、節點可用性...等等),以及調度策略進行選擇。
Controller Manager
Controller Manager ,是 K8S 中的控制器執行者,負責:管理各種控制器。
例如:副本控制器、節點控制器、服務控制器...等,如下圖所示:
圖片
Controller Manager,負責:管理集群的控制循環,包括:節點狀態監控、Pod 副本數量維護、處理故障節點。。。等。
Controller Manager ,通過循環檢查集群的當前狀態,并與期望狀態進行比較。
如果存在不一致的地方,控制器會啟動相應的操作以糾正實際狀態。
比如:ReplicaSet 控制器會確保在任何時刻,Pod 的副本數都、與用戶定義的副本數一致。
Node 節點
Node節點,也稱為工作節點,負責運行具體的容器化應用,接受 Master 的任務調度。
圖片
K8S的工作流程,大致如下:
- 創建和提交資源定義:用戶通過 YAML 文件或 kubectl 命令,提交 Deployment 、或 Pod 等資源定義到 API Server;
- API Server 處理請求:API Server 驗證請求,并將資源定義保存到 etcd,確保資源定義的持久性;
- 調度和部署:檢測到新創建的 Pod,并通過資源調度策略選擇合適的 Node 節點;
- 監控與維護:Controller Manager 持續監控集群狀態,出現異常時自動重啟、或重新調度。
這些組件共同合作,確保 K8S 集群的資源管理、調度、監控和自愈功能順利運行。