網頁

2021/2/5

Kubernetes Components 組件簡介

Kubernetes Components 組件簡介。

Kubernetes實際上是由許多組件(components)組成的叢集(cluster),這些組件又分為Control Plane Components與Node Components兩類。


Control Plane Components

Kubernates cluster的控制協調中心,負責管理cluster的每個節點(nodes)。運行Control Plane Components的node又稱作master node。

Control Plane Components包含以下組件:

  • kube-apiserver:提供Kubernetes API接口,負責Control Plane Components內外組件間的溝通。

  • etcd:鍵值資料庫(key-value store),存放全部的cluster資料的備份(backing store)。

  • kube-scheduler:負責監控新建的pods並分派到適合的node去運行。

  • kube-controller-manager:運行controller程序來監控並維護nodes的狀態及確保pods的數量。

  • cloud-controller-manager(optional):連結cluster與雲端服務的API,運行雲端服務的controller。


Node Components

負責提供工作(workload)的運行環境的機器,可以是虛擬機或實體機,又稱為worker node。每一個nodes是由Control Plane管理。Kunbernates把工作放入pod中的container,然後把pod分派到node來執行。

  • kubelet:運行在nodes上並向Control Plane註冊node,確保containers依照PodSpec運行在pods。

  • kube-proxy:運行在nodes上的網路代理,維護nodes的網路規則,提供pods間及對外的網路通訊。

  • Container runtime:容器執行環境,例如Docker、containered、CRI-O等實作Kubernetes CRI的容器。



下圖是Kubernates cluster中各組件的關係圖。可以看到組件間透過Kubernates API溝通。Node中運行多個pods,pods中有一或多個container,container中運行著workload,也就是應用程式。

Kubernate cluster components diagram

+---------------------------------------------------------------------------------+
|                                Control Plane                                    |
|   +------------+               (master node)                                    |
|   |    etcd    |<---------------+                                               |
|   +------------+                |                                               |
|                                 v                                               |
| +--------------+         +--------------+         +-----------------------+     |
| |kube-scheduler|<------->|kube-apiserver|<------->|kube-controller-manager|-+   |
| +--------------+ |-+     +--------------+ |-+     +-----------------------+ |-+ |
|   +--------------+ |       +--------------+ |       +-----------------------+ | |
|     +--------------+          +-------------+         +-----------------------+ |
|                                 ^                                               |
+---------------------------------|-----------------------------------------------+
                                  |
                                  |    +--------------+
                                  |    |     Node     |-+
                                  |    | (worker node)| |-+
                                  |    | +----------+ | | |
                                  +----->| kubelet  | | | |
+----------------------+          |    | +----------+ | | |
|         Pod          |          |    | +----------+ | | |
|                      |          +----->|kube|proxy| | | |
| +--------------+     |               | +----------+ | | |
| |  container   |-+   |               | +---+  +---+ | | |
| | +----------+ | |-+ |               | |pod|  |pod| | | |
| | | workload | | | | |               | +---+  +---+ | | |
| | |  (app)   | | | | |               | +---+  +---+ | | |
| | +----------+ | | | |               | |pod|  |pod| | | |
| +--------------+ | | |               | +---+  +---+ | | |
|   +--------------+ | |               +--------------+ | |
|     +--------------+ |                 +--------------+ |
+----------------------+                   +--------------+


2 則留言:

  1. 請問豬大現在工作會需要使用k8s嗎

    回覆刪除
  2. @SamChen 沒有耶,我工作中從沒用過,包括現在也是,所以都只停在觀念上稍微了解而已,也沒親自玩過。

    回覆刪除