1. 程式人生 > >CentOS 7.5 使用 yum 源安裝 Kubernetes 叢集主要元件說明

CentOS 7.5 使用 yum 源安裝 Kubernetes 叢集主要元件說明

1、Master元件

Master元件提供叢集的管理控制中心。

Master元件可以在叢集中任何節點上執行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master元件,並且不會在此VM/機器上執行使用者容器

kube-apiserver
kube-apiserver用於暴露Kubernetes API。任何的資源請求/呼叫操作都是通過kube-apiserver提供的介面進行。

ETCD
etcd是Kubernetes提供預設的儲存系統,儲存所有叢集資料,使用時需要為etcd資料提供備份計劃。

kube-controller-manager
kube-controller-manager執行管理控制器,它們是叢集中處理常規任務的後臺執行緒。邏輯上,每個控制器是一個單獨的程序,但為了降低複雜性,它們都被編譯成單個二進位制檔案,並在單個程序中執行。

這些控制器包括:

  • 節點(Node)控制器。
  • 副本(Replication)控制器:負責維護系統中每個副本中的pod。
  • 端點(Endpoints)控制器:填充Endpoints物件(即連線Services&Pods)。
  • Service Account和Token控制器:為新的Namespace 建立預設帳戶訪問API Token。

cloud-controller-manager
雲控制器管理器負責與底層雲提供商的平臺互動。雲控制器管理器是Kubernetes版本1.6中引入的,目前還是Alpha的功能。

雲控制器管理器僅運行雲提供商特定的(controller loops)控制器迴圈。可以通過將--cloud-provider flag設定為external啟動kube-controller-manager ,來禁用控制器迴圈。

cloud-controller-manager 具體功能:

  1. 節點(Node)控制器
  2. 路由(Route)控制器
  3. Service控制器
  4. 卷(Volume)控制器

kube-scheduler
kube-scheduler 監視新建立沒有分配到Node的Pod,為Pod選擇一個Node。

2、Node 元件

kubelet
kubelet是主要的節點代理,它會監視已分配給節點的pod,具體功能:

  • 安裝Pod所需的volume。
  • 下載Pod的Secrets。
  • Pod中執行的 docker(或experimentally,rkt)容器。
  • 定期執行容器健康檢查。
  • Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary.
  • Reports the status of the node back to the rest of the system.

kube-proxy
kube-proxy通過在主機上維護網路規則並執行連線轉發來實現Kubernetes服務抽象。

docker
docker用於執行容器。

flannel
Flannel 是 CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網路(Overlay Network)工具,需要另外下載部署。我們知道當我們啟動 Docker 後會有一個用於和容器進行互動的 IP 地址,如果不去管理的話可能這個 IP 地址在各個機器上是一樣的,並且僅限於在本機上進行通訊,無法訪問到其他機器上的 Docker 容器。Flannel 的目的就是為叢集中的所有節點重新規劃 IP 地址的使用規則,從而使得不同節點上的容器能夠獲得同屬一個內網且不重複的 IP 地址,並讓屬於不同節點上的容器能夠直接通過內網 IP 通訊。