1. 程式人生 > >Kubernetes系統架構及元件功能 筆記

Kubernetes系統架構及元件功能 筆記

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提供叢集日誌採集、儲存與查詢