Kubernetes采用主從分布式架構,包括Master Node(主節點)、Worker Node(從節點或工作節點),以及客戶端命令行工具kubectl和其它附加項。Master Node:主控節點,對集群進行調度管理。由API Server、Scheduler、Cluster State Store和Controller-Manger Server所組成。其功能作用如下:
1. API Server:提供了統一的資源操作入口,提供認證、授權、訪問控制、API注冊和 發現等機制。
2. Scheduler:負責資源調度,按照預定的調度策略將Pod調度到相應的節點上。
3. Cluster State Store:保存了整個集群的狀態,默認使用Etcd。
4. Controller-Manger Server:負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;Worker Node:工作節點,運行容器化的業務應用。包含kubelet、kube proxy和Container Runtime。功能如下:
1. kubelet:維護容器的生命周期,並管理CSI(Container Storage Interface)和CNI(Conteinre Network Interface)
2. kube-proxy:基於一種公共訪問策略(例如:負載均衡),提供訪問pod的途徑;
3. Container runtime:負責鏡像管理以及Pod和容器的真正運行,如:docker;
kubectl: Kubernetes集群的命令行接口,用於通過命令行與API Server進行交互,實現在集群中進行各種資源的維護與管理操作;
Add-on:對Kubernetes核心功能的擴展,主要有網絡、服務發現和可視化這三大類的附加項。工作原理
1、准備包含應用程序的Deployment的yml文件,然后通過kubectl客戶端工具發送給ApiServer。
2、ApiServer接收到客戶端的請求並將資源內容存儲到數據庫(etcd)中。
3、Controller組件(包括scheduler、replication、endpoint)監控資源變化並作出反應。
4、ReplicaSet檢查數據庫變化,創建期望數量的pod實例。
5、Scheduler再次檢查數據庫變化,發現尚未被分配到具體執行節點(node)的Pod,然后根據一組相關規則將pod分配到可以運行它們的節點上,並更新數據庫,記錄pod分配情況。
6、Kubelete監控數據庫變化,管理后續pod的生命周期,發現被分配到它所在的節點上運行的那些pod。如果找到新pod,則會在該節點上運行這個新pod。
另:kuberproxy運行在集群各個主機上,管理網絡通信,如服務發現、負載均衡。當有數據發送到主機時,將其路由到正確的pod或容器。對於從主機上發出的數據,它可以基於請求地址發現遠程服務器,並將數據正確路由,在某些情況下會使用輪循調度算法(Round-robin)將請求發送到集群中的多個實例。
CNI:flannel(網絡配置) calico(網絡配置、網絡策略)canel(網絡策略)