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