av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Kubernetes 內(nèi)部原理:架構(gòu)

在本文中,我們將深入探討 Kubernetes 架構(gòu),并探討其關鍵組件。

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務至上”的服務理念,堅持“二合一”的優(yōu)良服務模式,真誠服務每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及成都濕噴機等,在網(wǎng)站建設、成都全網(wǎng)營銷推廣、WAP手機網(wǎng)站、VI設計、軟件開發(fā)等項目上具有豐富的設計經(jīng)驗。

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

  • 控制平面節(jié)點
  • 工作節(jié)點

控制平面

控制平面是 Kubernetes 集群的“大腦”,它協(xié)調(diào)和編排各種組件,以確保系統(tǒng)的期望狀態(tài)得以實現(xiàn)和維護。控制平面進一步包括以下組件:

1. Kube-API 服務器

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

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

2. etcd

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

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

3. Kube-scheduler

Kube-scheduler 負責在工作節(jié)點上調(diào)度 pod。當我們創(chuàng)建一個 pod 并將其提交到 API 服務器時,調(diào)度程序會自動獲取 pod,根據(jù)可用資源和調(diào)度規(guī)則評估節(jié)點,并將 pod 分配給適當?shù)墓?jié)點。

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

4. Kube Controller 管理器

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

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

以下是重要的內(nèi)置 Kubernetes 控制器列表:

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

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

  • Job Controller:管理批處理作業(yè),確保特定任務或作業(yè)的完成次數(shù)達到了指定的要求。
  • CronJob Controller:允許您使用類似于 cron 的語法在指定間隔內(nèi)調(diào)度任務。它根據(jù)定義的計劃創(chuàng)建作業(yè)。
  • Namespace Controller:確保集群中的每個命名空間都具有一組相應的資源,并強制資源隔離。
  • Service Account 和 Token Controller:自動為命名空間中的 pod 創(chuàng)建默認帳戶和訪問令牌。
  • Service Controller:監(jiān)視服務和端點,并根據(jù)創(chuàng)建、刪除或重新調(diào)度 pod 的情況更新它們。
  • Endpoint Controller:維護 endpoint 對象,根據(jù)標簽選擇器將服務與 pod 匹配。

5. 云控制器管理器 (CCM)

當 Kubernetes 部署在云環(huán)境中時,云控制器管理器充當 Kubernetes 集群和云平臺 API 之間的橋梁。它管理 Kubernetes 使用的云特定資源的生命周期。

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

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

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

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

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

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

工作節(jié)點

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

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

1. Kubelet

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

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

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

  • 節(jié)點代理:kubelet 充當每個節(jié)點上的代理,將節(jié)點的狀態(tài)和容器的健康狀況報告給 Kubernetes 控制平面。
  • 健康監(jiān)控:kubelet 連續(xù)監(jiān)控 pod 中的容器的健康狀況。如果容器崩潰或變得不健康,kubelet 會采取適當?shù)拇胧?,如重新啟動容器或整個 pod。
  • Pod 管理:kubelet 管理節(jié)點上 pod 的狀態(tài)。它確保根據(jù)從 Kubernetes API 服務器接收的 pod 定義,指定的 pod 正在運行且健康。
  • Pod 網(wǎng)絡:kubelet 與網(wǎng)絡插件協(xié)作,為節(jié)點上的 pod 設置網(wǎng)絡。它為 pod 分配 IP 地址,并確保容器可以相互通信以及與外部世界通信。
  • 卷管理:kubelet 管理 pod 定義中指定的卷,根據(jù)需要附加和分離卷。它確保數(shù)據(jù)持久性并允許容器訪問共享存儲。
  • 資源管理:kubelet 強制執(zhí)行 pod 定義中指定的資源約束,確保容器不會超出分配的 CPU 和內(nèi)存限制。它還處理對 CPU 和內(nèi)存等資源的請求。
  • 驅(qū)逐和清理:當節(jié)點上的資源變得稀缺時,kubelet 可以根據(jù)預定義的策略從 pod 中驅(qū)逐 pod,以釋放資源。它還在 pod 終止時清理任何剩余的資源。
  • 節(jié)點注冊:kubelet 向 Kubernetes 控制平面注冊節(jié)點,使控制平面能夠知道可用于調(diào)度 pod 的節(jié)點。

2. Kube 代理

Kube 代理,即 Kubernetes 代理,是運行在 Kubernetes 集群中每個節(jié)點上的網(wǎng)絡代理。其主要功能是管理 pod 和服務之間的網(wǎng)絡通信,為容器化應用程序提供可靠和一致的網(wǎng)絡環(huán)境。它負責以下任務:

  • 服務發(fā)現(xiàn):Kube 代理負責在集群內(nèi)啟用服務發(fā)現(xiàn)。它根據(jù)服務規(guī)范中定義的標簽和選擇器,維護網(wǎng)絡規(guī)則,將請求從服務轉(zhuǎn)發(fā)到適當?shù)?pod。
  • 負載均衡:Kube 代理為具有多個副本或?qū)嵗姆諏嵤┴撦d均衡。它將傳入請求分發(fā)給與服務的選擇條件相匹配的可用 pod。
  • 網(wǎng)絡地址轉(zhuǎn)換(NAT):Kube 代理對出站流量執(zhí)行網(wǎng)絡地址轉(zhuǎn)換(NAT)。這確保來自 pod 的流量看起來是從主機的 IP 地址發(fā)出的,從而允許外部系統(tǒng)正確響應。
  • ClusterIP 服務:對于 ClusterIP 服務(僅在集群內(nèi)部可訪問),Kube 代理設置 IPTables 規(guī)則,將流量轉(zhuǎn)發(fā)到根據(jù)其標簽選擇器匹配的正確 pod。
  • NodePort 服務:Kube 代理配置主機的防火墻,以將傳入流量轉(zhuǎn)發(fā)到 NodePort 服務的適當 pod。這允許使用每個節(jié)點上的靜態(tài)端口外部訪問服務。
  • 高可用性:Kube 代理致力于確保服務的高可用性。如果 pod 不可用或添加/刪除了,Kube 代理會自動更新網(wǎng)絡配置以正確路由流量。
  • 健康檢查:Kube 代理監(jiān)視與服務相關的端點和 pod 的健康狀況。如果 pod 變得不健康,Kube 代理停止轉(zhuǎn)發(fā)流量。

3. 容器運行時

容器運行時環(huán)境負責根據(jù) pod 規(guī)范創(chuàng)建、啟動、停止和管理容器。

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

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

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

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


新聞名稱:Kubernetes 內(nèi)部原理:架構(gòu)
當前網(wǎng)址:http://uogjgqi.cn/article/dhpgjsc.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流