Kubernetes的來龍去脈與運行流程
譯文【51CTO.com快譯】Kubernetes是現代微服務中最突出的技術之一。它旨在使容器化應用程序的微服務集群管理更簡單、更自動化。本文從概念上詳細介紹了這一核心技術的工作原理。
了解Kubernetes的一種有用方法是將其視為容器的分布式操作系統。Kubernetes提供了協調容器(最常見的Docker容器)和運行在其上的基礎結構容器的交互和縮放所需的工具和命令。Kubernetes是一個設計用于各種場景的通用工具,它是一個非常靈活但又復雜的系統。
Kubernetes工作節點和控制平面
Kubernetes分有兩個方面:工作節點和控制平面。工作節點是實際的容器化應用程序以及必要的Kubernetes工具所在的位置。控制平面是管理集群工具所在的位置。圖1對此架構進行了高層次的研究。
如圖一所示,該體系結構分為工作節點和負責運行工作負載以及運行管理工具的頭節點。
兩種情況下的節點都是在虛擬機或實際的機器中執行的。
擴展Kubernetes Worker節點與工作負載
需要注意的是,Kubernetes底層基礎設施是運行工作節點工作負載時可用的資源(計算、內存、磁盤和網絡),但它并不直接控制它們。Kubernetes負責擴展工作負載,但更高級別的機制(如公共云自動擴展或手動干預)負責調整節點的可用性。因此,可以使用控制器與外部系統進行交互。
Kubernetes Worker節點組件
圖2展示了Kubernetes Worker節點的基本元素。
圖2. Kubernetes Worker節點詳細信息
Kubelet
kubelet是運行在工作節點上的一個“小”程序,負責在控制平面和節點之間進行平衡。kubelet核心目的是執行pods上來自頭節點集群的指令,并報告工作負載當前的狀態。
Kube Proxy
Kube Proxy負責在節點上實施網絡規則,并允許進出節點的流量。
Kube Proxy不同于入口,入口在集群級別操作,并定義進入集群的網絡路由規則。
Pod
Pod是節點上的離散工作單元,具有復制性。它們是封裝一個或多個容器化應用程序的抽象。Pod可以對一起運行的容器進行分組和隔離,并且同一臺機器上的pod之間也可以通信。容器和Pod之間的關系由Kubernetes部署描述符控制。
Deployment和ReplicaSet
Pod通常作為ReplicaSet的一部分進行配置和部署。ReplicaSet定義Pod所需的運行時特征,并使Kubernetes工作以保持該狀態。ReplicaSet通常由Deployment定義,Deployment定義了ReplicaSet參數和管理集群時要使用的方法(即pod是更新還是重新創建)。
Sidecar
在Pod級別,額外的功能是通過Sidecar插件實現的。Sidecar可以處理諸如Pod級別的日志記錄和信息收集之類的任務。
圖3更詳細地介紹了工作程序節點中的Pod。
圖3. Kubernetes Pod詳細說明
Kubernetes control plane
接下來到了控制器端,了解Kubernetes如何操作來控制集群的操作。
圖4詳細介紹了頭節點組件。
圖4. Kubernetes頭節點詳細信息
Etcd
最容易理解的組件是etcd(發音為“ et-cee-dee”)。Etcd是一個分布式對象存儲,充當整個集群的配置和狀態記錄數據庫。
API Server
API服務器(API Server)是集群的中央通信機制。當控制平面、工作節點和管理員通過Kubernetes命令行工具(如kubectl)或其他UI應用配置更改時,API Server則可以代理它們之間的交互。
Scheduler
調度程序(Scheduler)負責標識運行Pod的節點。根據Pod的特性和可用節點的現有狀態所使用的方法是不同,但是其目標都是達到自定義編寫的程度。調度程序在執行工作時與API服務器進行交互。
Controller
控制器(Controller)組件負責將集群保持在配置時所需的狀態,并在集群偏離控制時將其移向該狀態。控制器的作用就像一種恒溫器,它指定所需的狀態,然后工作來維持它。
在Kubernetes中,可以創建一個對象,用于記錄在etcd中的持久實體。然后,控制器將執行操作以確保對象具有所需的屬性。
例如,ReplicaSet(上面討論過)根據使用標準定義運行pod。相對于該ReplicaSet的群集的實際狀態是狀態。ReplicaSet是對象,指定的pod計數是spec。集群相對于該ReplicaSet的實際狀態是status。控制器從集群接收關于此狀態的一致報告,并通過創建或銷毀pod來采取措施使狀態與規范一致。
容器圖像存儲庫
最后一個組件是映像存儲庫(也稱為圖像注冊表)。此組件存在于集群之外,管理員和控制平面可以訪問它以下載所需的容器定義。注冊中心由包括Docker Hub在內的各種組織托管,可以是公共的,也可以是私有的。主要的云提供商都為企業提供托管存儲庫。
Kubernetes規則容器
現在已經了解了Kubernetes架構以及Kubernetes是如何實現的。由于其部署、管理和擴展基于容器的應用程序,可見Kubernetes不是一個簡單的系統。Kubernetes具有高度的可配置性和靈活性,可以處理意想不到的情況。
Kubernetes是當前軟件架構方法中的最突出的技術之一。因此,對DevOps、容器、云本地應用程序和微服務體系結構感興趣的人來說,這些Kubernetes的知識都是必不可少的。
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】