日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在本文中,我們將深入探討 Kube.NETes 架構,并探討其關鍵組件。

一個 Kubernetes 集群由兩個主要組件組成:

  • 控制平面節點
  • 工作節點

控制平面

控制平面是 Kubernetes 集群的“大腦”,它協調和編排各種組件,以確保系統的期望狀態得以實現和維護。控制平面進一步包括以下組件:

1. Kube-API 服務器

API 服務器是控制平面的中央管理點,它暴露 Kubernetes API,客戶端可以使用該 API 與集群進行交互。因此,當我們使用 kubectl 管理集群時,實際上是通過 HTTP REST API 與 API 服務器進行通信。kube-api 服務器負責以下任務:

  • API 管理:公開集群 API 端點并處理所有 API 請求。
  • 身份驗證(使用客戶端證書、令牌和 HTTP 基本身份驗證)和授權(ABAC 和 RBAC 評估)。
  • 處理 API 對象(如 pod、service 等)的API 請求和數據驗證。
  • 與 etcd 通信以存儲狀態和配置。
  • API 服務器協調控制平面和工作節點組件之間的所有進程。

2. etcd

etcd 是 Kubernetes 使用的分布式鍵值存儲,用于存儲集群的配置數據和資源的期望狀態。Kube-API 服務器使用 etcd 的觀察功能來跟蹤對象狀態的更改。它是控制平面中的唯一有狀態組件,負責以下任務:

  • 作為集群的唯一真相來源,確保一致性和數據持久性。
  • 充當后端服務發現和數據庫。
  • 存儲 Kubernetes 對象(如 pod、secret、daemon set、deployment、config map、stateful set 等)的所有配置、狀態和元數據。
  • 在鍵值對格式的 /registry 目錄鍵下存儲所有對象。例如,在默認命名空間下名為 Nginx 的 pod 的信息可以在 /registry/pods/default/nginx 下找到。

3. Kube-scheduler

Kube-scheduler 負責在工作節點上調度 pod。當我們創建一個 pod 并將其提交到 API 服務器時,調度程序會自動獲取 pod,根據可用資源和調度規則評估節點,并將 pod 分配給適當的節點。

  • 根據約束和可用資源確定每個 pod 在調度隊列中的有效放置節點。
  • 然后,調度程序對每個有效節點進行排名,并將 pod 綁定到合適的節點。集群中可以使用多個不同的調度程序;kube-scheduler 是參考實現。
  • 當我們部署一個 pod 時,我們指定了 pod 的要求,如CPU、內存、親和性、污點或容忍性、優先級、持久卷等。
  • Kubernetes 允許用戶使用自定義調度程序配置來開發自己的自定義調度程序。

4. Kube Controller 管理器

kube-controller-manager 是一個關鍵組件,運行著負責維護集群的期望狀態和管理系統不同方面的各種控制器。

每個控制器關注于集群管理的特定領域,自動化任務,確保資源的實際狀態與期望狀態相匹配。

以下是重要的內置 Kubernetes 控制器列表:

  • Node Controller:負責監控集群中的節點狀態。它會檢測節點故障并啟動操作以替換失敗的節點或將 pod 重新調度到健康的節點。
  • Replication Controller:確保 pod 的指定副本數始終運行。根據需要創建或終止 pod 以維護所需的副本計數。
  • Deployment Controller:擴展了 Replication Controller 的功能,允許您以聲明性方式定義和管理應用程序部署。它支持滾動更新、回滾和擴展。
  • StatefulSet Controller:通過確保穩定和有序的擴展和升級,管理有狀態應用程序。它為每個 pod 分配唯一的網絡標識,并在重新調度時保持其標識。
  • **Daemon

Set Controller**:確保在所有或一部分節點上運行特定 pod 的副本。通常用于任務,如節點監視代理或網絡組件。

  • 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 使用的云特定資源的生命周期。

(1)它從主 Kubernetes 控制平面中卸載了云特定的控制循環和功能,減少了其復雜性,使其更易于維護和擴展。

(2)它托管各種云特定控制器,負責管理特定于云提供商的資源。這些控制器包括:

  • Node Controller:管理 Kubernetes 節點與云實例之間的交互,處理節點的生命周期操作,如創建、刪除和調整大小。
  • Route Controller:處理服務的云特定網絡配置,例如創建負載均衡器或管理 IP 地址。
  • Volume Controller:與云存儲服務集成,以云特定方式提供和管理持久卷。
  • Service Controller:與云提供商的負載均衡器服務互動,以創建、管理和更新 Kubernetes 服務的負載均衡器。

(3)CCM 管理云資源,確保它們與 Kubernetes 資源定義的期望狀態相匹配。例如,它可能根據縮放要求創建或釋放云實例。

(4)它與云提供商的 API 進行通信,執行操作,例如創建實例、配置網絡、管理存儲資源等。

(5)它確保適當管理安全設置和憑據,與云服務交互時進行管理。

工作節點

工作節點負責運行容器化應用程序。它包括以下組件。

  • kubelet
  • kube-proxy
  • 容器運行時

1. Kubelet

Kubelet 是 Kubernetes 控制平面和節點上運行的容器之間的關鍵橋梁,確保集群的期望狀態得以實現和維護。

它在集群中的每個節點上運行一個代理組件,以將節點的狀態和資源利用率報告給 Kubernetes 控制平面。它不以容器形式運行,而是由 systemd 管理的守護程序。

以下是 kubelet 的主要功能和職責:

  • 節點代理: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 和服務之間的網絡通信,為容器化應用程序提供可靠和一致的網絡環境。它負責以下任務:

  • 服務發現: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 規范創建、啟動、停止和管理容器。

一些常用的 Kubernetes 容器運行時包括 Docker、contAInerd、CRI-O、rkt(發音為 "rocket")等。

  • 容器管理:容器運行時環境負責根據 pod 定義創建、啟動、停止和管理容器。
  • 鏡像管理:它根據 pod 定義中指定的鏡像引用從容器倉庫(如 Docker Hub、google Container Registry 等)拉取容器鏡像。
  • 資源隔離和管理:運行時環境確保容器根據其 pod 配置中指定的 CPU、內存和其他資源擁有適當的資源級別。
  • 網絡和通信:它設置容器的網絡,確保它們可以相互通信以及與集群內外的服務通信。這可能涉及配置網絡命名空間、IP 地址和端口映射。
  • 容器安全性:運行時環境通過強制容器之間的隔離,防止它們訪問彼此的文件系統或資源。它還可能實施其他安全措施,如 AppArmor 或 SElinux。
  • 卷和存儲管理:運行時環境管理附加到容器的卷,確保數據持久性并允許容器訪問共享存儲。
  • 生命周期管理:它處理容器的完整生命周期,包括啟動、停止、重啟和清理容器。
  • 健康監控和重啟:運行時環境監視容器的健康狀況,并可以自動重啟崩潰或變得不健康的容器。
  • 與硬件和內核的交互:運行時環境與主機操作系統的內核進行交互,管理容器資源使用、網絡命名空間、進程隔離和其他低級操作。

Kubernetes 的架構促進了分布式微服務導向的方法,使開發人員可以專注于應用程序邏輯,而平臺負責部署、擴展和負載均衡。

無論是在本地、云中還是混合環境中,Kubernetes 的架構使組織能夠高效地管理復雜的容器化工作負載,同時秉承模塊化、抽象和自動化的原則。

分享到:
標簽:Kubernetes
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定