Kubernetes 架構:2022 年你需要知道的一切
已發表: 2021-01-05目錄
關於 Kubernetes
Kubernetes 是一個開源平台,具有資源最大化、自動部署過程和更新、自動擴展、自我修復、自動回滾和部署、容器編排器負載平衡、服務發現、自動重啟、自動放置等功能。和自動複製等。Kubernetes不僅僅是一個容器編排器; 它也是基於雲的應用程序的操作系統。
它就像一個運行應用程序的平台,類似於在 Windows、MacOS 或 Linux 上運行的其他應用程序,具有更大的靈活性。 它減少了編排的負載,並允許開發人員完全專注於以容器為中心的工作流,以實現自助操作。 開發人員在部署和應用程序管理方面具有高度自動化的優勢。 它可以與任何環境集成以增強功能。
閱讀:印度的 Kubernetes 工資
Kubernetes 架構
Kubernetes 架構由層組成:更高層和更低層。 在這個個體中,物理機或虛擬機被匯集到一個集群中。 共享網絡用於每個服務器之間的通信。 Kubernetes 有一個(至少)一個主控作為控制平面,一個分佈式存儲系統。 多個集群節點也稱為 Kubelets。
- Kubernetes 的主控,控制平面,調度部署,公開 API 並管理整個 Kubernetes 集群。
- 集群節點運行容器運行時、與主節點通信的代理以及其他監控組件、日誌記錄等。
Kubernetes架構和Kubernetes 組件如下圖所示。
資源

讓我們看一下Kubernetes 組件。
Kubernetes 組件
大師:Kubernetes 控制平面
Master 維護著 Kubernetes 中每個對象的數據。 由於它管理整個集群,因此它被稱為 Master。 它控制對象狀態,維護系統真實狀態與所需狀態的匹配,響應變化等。
它包含以下三個重要組成部分:
- Kube- API 服務器: Kubernetes API 服務器
- Kube-Scheduler:工作節點中的 Pod 調度
- Kube-Controller:管理 pod 複製
如果有多個主節點,則這些組件將在所有主節點之間複製。
包括更新、擴展等在內的各種應用程序的生命週期編排由 API Server 完成。 它作為不在集群內的客戶端的網關。 API 服務器進行身份驗證。 它還充當 pod 和節點的中介。
控制器執行以下任務:
- 運行核心控制循環
- 將駕駛狀態更改為所需狀態。
- 觀察集群狀態
它還通過集成到公共雲中來提供路由、存儲服務、負載平衡、DNS 網絡服務、VM 實例。 驅動自動縮放狀態的不同控制器、節點、服務和 Pod、命名空間。
整個節點的容器調度由集群內的Scheduler完成; 考慮不同的資源限制/保證,或反親和/親和規範。
Kubernetes 控制平面分類如下所示:
資源
集群節點:Kubelets
Kubelet 是負責運行容器的不同機器。 主節點管理集群節點。 它也被稱為小黃人。 集群節點被認為是 Kubernetes 的主控制器。 它驅動容器的執行層 Docker。
它包含以下組件:
- Pod:容器組
- Docker:基於容器的技術,OS的用戶空間
- Kubelet:負責維護一組 pod 的容器代理。
- Kube-proxy:路由從服務進入節點的流量。
Kubernetes 集群節點分類如下所示:
資源
Pod 和服務
Pod 是 Kubernetes 中開發人員與之交互的一個重要概念。 它代表正在運行的進程。 它可以託管垂直集成的應用程序堆棧,例如 WordPress LAMP 應用程序。 下面給出了不同的 pod 類型:

吊艙類型 | 功能性 |
副本集 | 簡單的 Pod 類型 確保固定吊艙的運行 |
部署 | 通過ReplicaSet的聲明式方式管理 pod 包括滾動更新和回滾機制。 |
有狀態集 | 管理應該持續存在的 pod |
守護進程 | 確保每個節點運行一個 pod 實例。 管理集群服務,例如日誌轉發和健康監控。 |
CronJob 和作業 | 作為調度程序運行短暫的作業 |
一個 pod 可以由許多容器和外部卷組成。 pod的分類如下圖所示:
資源
服務對 Pod 進行跟踪。 為了定義 pod 和服務關聯,使用選擇器或標籤而不是 IP 地址分配。 這簡化了向服務添加 pod 和發布新版本的過程。 以下是不同的服務類型:
服務類型 | 功能性 |
集群IP | 默認類型; 在內部 IP 上公開服務並使服務可訪問 |
節點端口 | 允許開發人員設置自己的負載均衡器 |
負載均衡器 | 自動化他們的配置 |
外部名稱 | 常用於在 Kubernetes 中創建服務。 |
使用的典型雲部署是 LoadBalancer 類型。 Kubernetes 支持抽象高級 Ingress 以解決複雜性。 用戶可以通過使用相同的負載均衡器在相同的 IP 地址內顯示不同的服務。
閱讀更多: Openshift 與 Kubernetes:Openshift 與 Kubernetes 之間的區別
Kubernetes 網絡
大多數情況下,CNI(容器網絡接口)用於模糊基本網絡。 Calico 是一個全路由選項,也可以使用。 在這兩個選項中,通信都是在集群範圍的 pod 網絡上完成的,並由 Calico 或 Flannel(CNI 提供者)控制。 容器可以通過 localhost 在 pod 內進行通信,沒有任何限制。 從外部源到服務或從 pod 到服務的移動是通過 Kube-proxy 完成的。
持久存儲
包含一些數據的目錄在 Kubernetes 中稱為卷。 pod 可以訪問這些目錄。 Kubernetes 中有很多存儲類型。 pod 中的容器可以消耗任何存儲空間。 NFS、Amazon Elastic Block Store、Iscsi、CephFS 等公共雲服務用於將文件和塊存儲掛載到 Pod。 PV (PersistentVolumes) 是與現有存儲資源綁定的集群範圍的對象。
在命名空間內,存儲消耗請求由 PersistentVolumeClaim 發起。 PV 的不同狀態有可用、綁定、釋放和失敗。 StorageClasses 是抽象層。 它區分底層存儲質量並分離出各種特徵。 pod 可以在 StorageClasses 和 PersistentVolumeClaim 的幫助下動態請求新的存儲。
資源
發現和發布服務
根據集群的版本,Kubernetes 依賴 Kube-DNS 或 CoreDNS 來發現服務。 這些集成的 DNS 服務創建、更新和刪除 DNS 記錄。 它通過一致且簡單的命名方案幫助應用程序以其他 pod 和服務為目標。
示例(來源)
對於 Kubernetes 服務,DNS 記錄可以是service.namespace.svc.cluster.local
DNS記錄,一個pod可以有: 10.32.0.125.namespace.pod.cluster.local
資源
命名空間
包含虛擬集群的物理集群稱為命名空間。 它為多個用戶提供單獨的虛擬環境以及對 Kubernetes 對象的各自訪問權限。
標籤
標籤用於區分單個命名空間中存在的資源。 屬性由鍵或值對定義。 標籤用於將組織結構映射到 Kubernetes 對像上。 它可以描述環境、發布狀態、應用層或客戶標識。 它可以防止對象的硬鏈接。
註釋
註釋用於向對象添加任意未識別的行李或元數據。 它用作聲明性配置工具。

必讀: Kubernetes Vs。 Docker:你應該知道的主要區別
從世界頂級大學獲得軟件工程學位。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
Kubernetes 的技術發展迅速,是面向未來的高性價比解決方案。 它為應用程序提供了極大的穩定性。
本文解釋了Kubernetes 架構和Kubernetes 組件的所有基本概念。
如果您有興趣了解有關 Kubernetes、大數據的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,以及任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
