Kubernetes架構(gòu)設(shè)計與核心組件工作流
Kubernetes是谷歌開源的容器編排引擎,架構(gòu)和設(shè)計思想來源于谷歌內(nèi)部使用調(diào)度工具——Borg。Borg是谷歌一個久負盛名的的內(nèi)部使用的大規(guī)模集群管理系統(tǒng),它基于Linux Container(LXC)技術(shù),提供了面向應(yīng)用的容器集群部署和管理系統(tǒng)。Kubernetes的目標旨在消除編排物理/虛擬計算,網(wǎng)絡(luò)和存儲基礎(chǔ)設(shè)施的負擔,并使應(yīng)用程序運營商和開發(fā)人員完全將重點放在以容器為中心的原語上進行自助運營。實現(xiàn)資源管理的自動化,以及跨多個數(shù)據(jù)中心的資源利用率最大化。
Kubernetes是一套完備的容器集群管理引擎,它提供了各種機制和接口來保證應(yīng)用的快速發(fā)布和健康運行,提供了豐富的命令行工具(CLI)和API接口,便于與集群交互,同時Kubernetes提供了多層次的安全防護和隔離機制,多租戶應(yīng)用的支撐能力,應(yīng)用的全生命周期管理,可擴展的自動資源調(diào)度機制,多粒度的資源配額管理能力,多租戶支持的統(tǒng)一配置管理組件,多可用區(qū)域支撐,Kubernetes提供了一整套完善的容器管理工具,為容器集群管理提供了一站式服務(wù)。
Kubernetes架構(gòu)
Kubernetes的整體架構(gòu),如下圖所示:
Kubernetes主要由以下幾個核心組件組成:
- etcd保存了整個集群的狀態(tài);
- kube-apiserver提供了資源操作的唯一入口,并提供認證、授權(quán)、訪問控制、API 注冊和發(fā)現(xiàn)等機制;
- kube-controller-manager負責維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
- kube-scheduler負責資源的調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機器上;
- kubelet負責維持容器的生命周期,同時也負責Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;
- Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI),默認的容器運行時為Docker;
- kube-proxy負責為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負載均衡。
除了核心組件,還有一些推薦的Add-ons:
- kube-dns負責為整個集群提供DNS服務(wù)
- Ingress Controller為服務(wù)提供外網(wǎng)入口
- Heapster提供資源監(jiān)控
- Dashboard提供 GUI
- Federation提供跨可用區(qū)的集群
- Fluentd-elasticsearch提供集群日志采集、存儲與查詢
下圖描述了創(chuàng)建pod的對象出發(fā),其Kubernetes各個組件之間的交互及其工作流的時序圖:
通過上圖了解到創(chuàng)建pod的對象時,Kubernetes各個組件之間的交互及其工作流,使Kubernetes從業(yè)者更能理解Kubernetes各個組件的作用和相互之間怎么交互。