Kubernetes系統架構及元件功能 筆記
阿新 • • 發佈:2018-11-28
Kubernetes系統架構及元件功能
Kubernetes叢集包含有節點代理kubelet和Master元件(APIs, scheduler, etc),一切都基於分散式的儲存系統。
Kubernetes節點有執行應用容器必備的服務,而這些都是受Master的控制。
每次個節點上當然都要執行Docker。Docker來負責所有具體的映像下載和容器執行
Kubernetes主要由以下幾個核心元件組成:
- etcd儲存了整個叢集的狀態;
- Kube-apiserver:Kubernetes API,叢集的統一入口,以HTTP API提供介面服務,所有物件資源的增刪改查和監控操作都交給APIServer處理後再提交給Etcd儲存。官網介紹apiserver提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制;
- Kube-controller manager處理叢集中常規後臺任務,一個資源對應一個控制器,而Controller manager就是負責管理這些控制器的。官網介紹controller manager負責維護叢集的狀態,比如故障檢測、自動擴充套件、滾動更新等;
- Kube-scheduler:根據排程演算法為新建立的Pod選擇一個Node節點。官網介紹是負責資源的排程,按照預定的排程策略將Pod排程到相應的機器上;
- kubelet:是Master在Node節點上的Agent,管理本機執行容器的生命週期,比如建立容器、Pod掛載資料卷、下載secret,獲取容器和節點狀態等工作。kubelet將每個pod轉換成一組容器。官網介紹:負責維護容器的生命週期,同時也負責Volume(CVI)和網路(CNI)的管理;
- Container runtime負責映象管理以及Pod和容器的真正執行(CRI);
- kube-proxy:在Node節點上實現Pod網路代理,維護網路規則和四層負載均衡工做。官網介紹:負責為Service提供cluster內部的服務發現和負載均衡,維護網路規則;
- docker或rocket/rkt:執行容器。
第三方服務
- etcd:分散式鍵值儲存系統,用於保持叢集狀態,比如Pod、Service等物件資訊。
除了核心元件,還有一些Add-ons:
- kube-dns負責為整個叢集提供DNS服務
- Ingress Controller為服務提供外網入口
- Heapster提供資源監控
- Dashboard提供GUI
- Federation提供跨可用區的叢集
- Fluentd-elasticsearch提供叢集日誌採集、儲存與查詢