1. 程式人生 > >k8s 架構淺析

k8s 架構淺析

目錄

文章目錄

Kubernetes 的電梯間演講

Kubernetes 是一個 面向應用 的容器叢集部署、管理及編排系統,旨在為終端使用者遮蔽物理/虛擬計算、網路、儲存基礎設施的複雜度,關注以應用為核心、以容器為原語的自動化運營平臺。

在這裡插入圖片描述

Kubernetes 具備完善的叢集管理能力,包括多層次的安全認證和准入機制、多租戶應用支撐能力、透明的服務註冊和服務發現機制、內建負載均衡器、故障發現和自我修復能力、服務滾動升級和線上擴容、可擴充套件的資源自動排程機制、多粒度的資源配額管理能力。 Kubernetes 還提供完善的管理工具,涵蓋開發、部署測試、運維監控等各個環節。

Kubernetes 的層級物件

在這裡插入圖片描述

Cluster: 是一個被 k8s 協調的高可用叢集,作為 k8s 叢集的根操作物件,將多臺計算節點(Master/Node)連線成一個工作整體。

Master:下屬於 Cluster,充當叢集中的中央控制角色,負責管理、協調叢集中的所有活動(e.g. scheduler app、維護 app 狀態機、 彈性擴充套件 apps、釋出 app 更新 etc.)。

Node:下屬於 Cluster,作為叢集中的 Worker,受 Master 指使。是 Containers 及其 runtime 引擎的允許載體。

Pod: 是一個抽象而統一的概念,遮蔽底層異構 Container Runtime 技術實現。k8s 的最小工作單元,是 Containers 的 “Container”。

Container:下屬於 Pod,是真正意義上的、常規的容器。

Kubernetes 的元件架構

在這裡插入圖片描述

Kubernetes 是典型的中控分散式架構(Central control distributed architecture),下面分別列舉 Master、Node 的元件。

Master

  • etcd:提供高可用性、嚴格資料一致性的非關係型資料庫,具有共享配置、服務發現、分散式等特點。常被用於構建服務發現系統。

  • API Server:統一且唯一的 Cluster 北向訪問介面,依靠 CA 認證體系提供身份認證、授權、鑑權等訪問控制功能,統稱 3A(Authentication、Authorization、Admission),是 Kubernets Security Mechanism 的門神。

  • Controller Manager:中央控制管理器,Cluster 的核心管理模組,負責整個 Cluster 的 “運”(e.g. 故障檢測、彈性擴充套件、滾動更新,etc.)

  • Scheduler:資源排程器,按照預設的策略將 Pod 排程到目的(最佳)Node 上啟動。

Node

  • kubelet:維護 Container 的生命週期,同時也負責儲存(CSI)和網路(CNI)的管理。

  • kube-proxy:為 Service 提供 Cluster 內部的服務發現和負載均衡功能。

  • Container runtime:負責映象管理以及 Pod 和 Container 的執行(CRI)。

Kubernetes 的元件通訊協議/介面

在這裡插入圖片描述

Kubernetes 的分層架構

在這裡插入圖片描述

最後

一圖抵萬語,上文圖源均來自網際網路。實話說,並沒有找到一張筆者滿意的架構圖,還是找個時間自己畫一畫吧。但依舊感謝這些圖的原創作者們的貢獻。

回到主題,Kubernets 的架構和整個部署的複雜度相較於 OpenStack 要更低,從這個角度來看好像的確為企業使用者的運維成本省了不少。當然筆者對 k8s 也只是初學,做不得準。但可以肯定的是,k8s 的核心精髓在於 編排 二字,這是由 Container 的基因決定的。將 Container 當作 VM 來使用,那就是一個天大的誤解了。所以每每看見市場上哪些為容器而容器,毫無編排特徵的產品,筆者實在是難免感慨。