組件架構圖

如圖所示kubernetes分為master和node端,以及一個外接的cloud端。
- master 控制平面,control plan,包括 kube-apiserver, kube-scheduler, kube-controller-manager, etcd.
- kube-apiserver
將kubernetes 控制平面api暴露出來的api服務。用於接收用戶端的請求,是控制平面的前端,是一個無狀態的服務,可以啟動多個實例用於分流請求流量。
-
- kube-scheduler
用於watch apiserver的資源變動(增刪改查),並調度至合適的node節點,從而來創建pod資源。通過一系列的filtering(過濾),scoring(打分)選取合適的node節點,調度pod運行。
-
- kube-controller-manager
每個控制器都是獨立的二進制進程,包括node controller, replication controller, endpoints controller, service account & token controllers。通過空置循環將期望狀態和運行狀態保持一致。
-
- etcd
高可用,KV結構的kubernetes后端數據存儲組件。
-
- cloud-controller-manager
與雲廠商服務能力對接組件 又稱為kubernetes cloudprovider
- node節點 又稱為數據平面 data plan 包括 kubelet, kube-proxy, container runtime
- kubelet
運行在集群每個節點的客戶端,確保相關容器運行在pod中,通過pod specs標簽描述容器的運行狀態。
-
- kube-proxy
運行在集群每個節點的網絡代理組件,確保kubernetes服務鏈接和轉發的組件。
-
- container runtime
支持運行容器底層環境的軟件。支持docker containerd cri-io rktlet等
- cloud端
作為集群外部的附加能力,通過與cloud-controller-manager組件對接,擴展kubernetes集群於雲上動態擴展的特性。
- addons 附加組件
使用kubernetes resources增加集群功能,如DNS, Web UI(dashboard),container resources monitoring,cluster-level logging
-
- dns coredns
- cni (flannel, calico)網絡插件接口
- Web UI(dashboard)可視化平台
- container resources monitoring 容器資源監控
- cluster-level logging 負責保存,搜索,查看容器日志
工作流程
- master
用戶通過(API, Web UI, CLI)向APIserver 發送請求,kube-schedule 監聽apiserver資源變動,同時從node節點選取最合適的node節點開始調度,並把調度結果保存到etcd集群中去。
- node
kubelet也會監聽apiserver的資源變動,並在復合的node上通過kubelet調用相關docker引擎進行后續打包和構建操作。
