在本文中,我們將深入探討 Kubernetes 架構,并探討其關鍵組件。zOD28資訊網——每日最新資訊28at.com
一個 Kubernetes 集群由兩個主要組件組成:zOD28資訊網——每日最新資訊28at.com
zOD28資訊網——每日最新資訊28at.com
以下是重要的內置 Kubernetes 控制器列表:zOD28資訊網——每日最新資訊28at.com
- Node Controller:負責監控集群中的節點狀態。它會檢測節點故障并啟動操作以替換失敗的節點或將 pod 重新調度到健康的節點。
- Replication Controller:確保 pod 的指定副本數始終運行。根據需要創建或終止 pod 以維護所需的副本計數。
- Deployment Controller:擴展了 Replication Controller 的功能,允許您以聲明性方式定義和管理應用程序部署。它支持滾動更新、回滾和擴展。
- StatefulSet Controller:通過確保穩定和有序的擴展和升級,管理有狀態應用程序。它為每個 pod 分配唯一的網絡標識,并在重新調度時保持其標識。
- **Daemon
Set Controller**:確保在所有或一部分節點上運行特定 pod 的副本。通常用于任務,如節點監視代理或網絡組件。zOD28資訊網——每日最新資訊28at.com
- Job Controller:管理批處理作業,確保特定任務或作業的完成次數達到了指定的要求。
- CronJob Controller:允許您使用類似于 cron 的語法在指定間隔內調度任務。它根據定義的計劃創建作業。
- Namespace Controller:確保集群中的每個命名空間都具有一組相應的資源,并強制資源隔離。
- Service Account 和 Token Controller:自動為命名空間中的 pod 創建默認帳戶和訪問令牌。
- Service Controller:監視服務和端點,并根據創建、刪除或重新調度 pod 的情況更新它們。
- Endpoint Controller:維護 endpoint 對象,根據標簽選擇器將服務與 pod 匹配。
5. 云控制器管理器 (CCM)
當 Kubernetes 部署在云環境中時,云控制器管理器充當 Kubernetes 集群和云平臺 API 之間的橋梁。它管理 Kubernetes 使用的云特定資源的生命周期。zOD28資訊網——每日最新資訊28at.com
zOD28資訊網——每日最新資訊28at.com
(1)它從主 Kubernetes 控制平面中卸載了云特定的控制循環和功能,減少了其復雜性,使其更易于維護和擴展。zOD28資訊網——每日最新資訊28at.com
(2)它托管各種云特定控制器,負責管理特定于云提供商的資源。這些控制器包括:zOD28資訊網——每日最新資訊28at.com
- Node Controller:管理 Kubernetes 節點與云實例之間的交互,處理節點的生命周期操作,如創建、刪除和調整大小。
- Route Controller:處理服務的云特定網絡配置,例如創建負載均衡器或管理 IP 地址。
- Volume Controller:與云存儲服務集成,以云特定方式提供和管理持久卷。
- Service Controller:與云提供商的負載均衡器服務互動,以創建、管理和更新 Kubernetes 服務的負載均衡器。
(3)CCM 管理云資源,確保它們與 Kubernetes 資源定義的期望狀態相匹配。例如,它可能根據縮放要求創建或釋放云實例。zOD28資訊網——每日最新資訊28at.com
(4)它與云提供商的 API 進行通信,執行操作,例如創建實例、配置網絡、管理存儲資源等。zOD28資訊網——每日最新資訊28at.com
(5)它確保適當管理安全設置和憑據,與云服務交互時進行管理。zOD28資訊網——每日最新資訊28at.com
工作節點
工作節點負責運行容器化應用程序。它包括以下組件。zOD28資訊網——每日最新資訊28at.com
zOD28資訊網——每日最新資訊28at.com
1. Kubelet
Kubelet 是 Kubernetes 控制平面和節點上運行的容器之間的關鍵橋梁,確保集群的期望狀態得以實現和維護。zOD28資訊網——每日最新資訊28at.com
它在集群中的每個節點上運行一個代理組件,以將節點的狀態和資源利用率報告給 Kubernetes 控制平面。它不以容器形式運行,而是由 systemd 管理的守護程序。zOD28資訊網——每日最新資訊28at.com
zOD28資訊網——每日最新資訊28at.com
以下是 kubelet 的主要功能和職責:zOD28資訊網——每日最新資訊28at.com
- 節點代理:kubelet 充當每個節點上的代理,將節點的狀態和容器的健康狀況報告給 Kubernetes 控制平面。
- 健康監控:kubelet 連續監控 pod 中的容器的健康狀況。如果容器崩潰或變得不健康,kubelet 會采取適當的措施,如重新啟動容器或整個 pod。
- Pod 管理:kubelet 管理節點上 pod 的狀態。它確保根據從 Kubernetes API 服務器接收的 pod 定義,指定的 pod 正在運行且健康。
- Pod 網絡:kubelet 與網絡插件協作,為節點上的 pod 設置網絡。它為 pod 分配 IP 地址,并確保容器可以相互通信以及與外部世界通信。
- 卷管理:kubelet 管理 pod 定義中指定的卷,根據需要附加和分離卷。它確保數據持久性并允許容器訪問共享存儲。
- 資源管理:kubelet 強制執行 pod 定義中指定的資源約束,確保容器不會超出分配的 CPU 和內存限制。它還處理對 CPU 和內存等資源的請求。
- 驅逐和清理:當節點上的資源變得稀缺時,kubelet 可以根據預定義的策略從 pod 中驅逐 pod,以釋放資源。它還在 pod 終止時清理任何剩余的資源。
- 節點注冊:kubelet 向 Kubernetes 控制平面注冊節點,使控制平面能夠知道可用于調度 pod 的節點。
2. Kube 代理
Kube 代理,即 Kubernetes 代理,是運行在 Kubernetes 集群中每個節點上的網絡代理。其主要功能是管理 pod 和服務之間的網絡通信,為容器化應用程序提供可靠和一致的網絡環境。它負責以下任務:zOD28資訊網——每日最新資訊28at.com
- 服務發現:Kube 代理負責在集群內啟用服務發現。它根據服務規范中定義的標簽和選擇器,維護網絡規則,將請求從服務轉發到適當的 pod。
- 負載均衡:Kube 代理為具有多個副本或實例的服務實施負載均衡。它將傳入請求分發給與服務的選擇條件相匹配的可用 pod。
- 網絡地址轉換(NAT):Kube 代理對出站流量執行網絡地址轉換(NAT)。這確保來自 pod 的流量看起來是從主機的 IP 地址發出的,從而允許外部系統正確響應。
- ClusterIP 服務:對于 ClusterIP 服務(僅在集群內部可訪問),Kube 代理設置 IPTables 規則,將流量轉發到根據其標簽選擇器匹配的正確 pod。
- NodePort 服務:Kube 代理配置主機的防火墻,以將傳入流量轉發到 NodePort 服務的適當 pod。這允許使用每個節點上的靜態端口外部訪問服務。
- 高可用性:Kube 代理致力于確保服務的高可用性。如果 pod 不可用或添加/刪除了,Kube 代理會自動更新網絡配置以正確路由流量。
- 健康檢查:Kube 代理監視與服務相關的端點和 pod 的健康狀況。如果 pod 變得不健康,Kube 代理停止轉發流量。
3. 容器運行時
容器運行時環境負責根據 pod 規范創建、啟動、停止和管理容器。zOD28資訊網——每日最新資訊28at.com
一些常用的 Kubernetes 容器運行時包括 Docker、containerd、CRI-O、rkt(發音為 "rocket")等。zOD28資訊網——每日最新資訊28at.com
- 容器管理:容器運行時環境負責根據 pod 定義創建、啟動、停止和管理容器。
- 鏡像管理:它根據 pod 定義中指定的鏡像引用從容器倉庫(如 Docker Hub、Google Container Registry 等)拉取容器鏡像。
- 資源隔離和管理:運行時環境確保容器根據其 pod 配置中指定的 CPU、內存和其他資源擁有適當的資源級別。
- 網絡和通信:它設置容器的網絡,確保它們可以相互通信以及與集群內外的服務通信。這可能涉及配置網絡命名空間、IP 地址和端口映射。
- 容器安全性:運行時環境通過強制容器之間的隔離,防止它們訪問彼此的文件系統或資源。它還可能實施其他安全措施,如 AppArmor 或 SELinux。
- 卷和存儲管理:運行時環境管理附加到容器的卷,確保數據持久性并允許容器訪問共享存儲。
- 生命周期管理:它處理容器的完整生命周期,包括啟動、停止、重啟和清理容器。
- 健康監控和重啟:運行時環境監視容器的健康狀況,并可以自動重啟崩潰或變得不健康的容器。
- 與硬件和內核的交互:運行時環境與主機操作系統的內核進行交互,管理容器資源使用、網絡命名空間、進程隔離和其他低級操作。
Kubernetes 的架構促進了分布式微服務導向的方法,使開發人員可以專注于應用程序邏輯,而平臺負責部署、擴展和負載均衡。zOD28資訊網——每日最新資訊28at.com
無論是在本地、云中還是混合環境中,Kubernetes 的架構使組織能夠高效地管理復雜的容器化工作負載,同時秉承模塊化、抽象和自動化的原則。zOD28資訊網——每日最新資訊28at.com
本文鏈接:http://www.tebozhan.com/showinfo-26-10526-0.htmlKubernetes 內部原理:架構
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 保障SaaS應用安全的關鍵要求和檢查清單
下一篇: 為什么在 C++14 中刪除了 get 函數?