Kubernets 架構(gòu)
我們把服務分為運行在工作節(jié)點上的服務和組成集群級別控制板的服務 啰劲。
節(jié)點有運行應用容器必備的服務,而這些都是受Master控制闪幽。
K8s主要由以下核心組件組成板乙,主要分為Control Plance和node上的組件。
Kubernets 集群組件
Master 負責管理整個集群感挥。?Master 協(xié)調(diào)集群中的所有活動,例如調(diào)度應用越败、維護應用的所需狀態(tài)触幼、應用擴容以及推出新的更新。
Node 是一個虛擬機或者物理機究飞,它在 Kubernetes 集群中充當工作機器的角色?每個Node都有 Kubelet , 它管理 Node 而且是 Node 與 Master 通信的代理置谦。 Node 還應該具有用于??處理容器操作的工具堂鲤,例如 Docker 或 rkt 。處理生產(chǎn)級流量的 Kubernetes 集群至少應具有三個 Node 媒峡。
? 所有相互關(guān)聯(lián)組件的 Kubernetes 集群如下:
????????從圖中可看到?一個 Kubernetes (后面簡稱K8s)集群由一組節(jié)點(nodes)的機器以及集群的控制服務(Control Plane)組成瘟栖。
????????工作節(jié)點(worker nodes)托管作為應用程序組件的 Pod 。主集群的控制服務管理集群中的工作節(jié)點和 Pod丝蹭。
各個組件的理解
?Control Plane Components
控制平面的組件對集群做出全局決策(比如調(diào)度)慢宗,以及檢測和響應集群事件(例如,當不滿足部署的?replicas?字段時奔穿,啟動新的?pod)镜沽。由以下組件組成
1.?kube-apiserver:?是Control Plane 的組件, 該組件公開了 k8s的API贱田。 可以理解為是控制面的前端缅茉。設計上考慮了水平伸縮,可通過部署多個實例進行伸縮男摧。
2.?etcd:是兼具一致性和高可用性的鍵值數(shù)據(jù)庫蔬墩,可以作為保存 Kubernetes 所有集群數(shù)據(jù)的后臺數(shù)據(jù)庫。
3. kube-scheduler:監(jiān)視那些新創(chuàng)建的未指定運行節(jié)點的 Pod耗拓,并選擇節(jié)點讓 Pod 在上面運行拇颅。
4.?kube-controller-manager:運行控制器的組件,這些控制器包括:
? ? ? ? a. 節(jié)點控制器(Node Controller): 負責在節(jié)點出現(xiàn)故障時進行通知和響應乔询。
? ? ? ? b. 副本控制器(Replication Controller): 負責為系統(tǒng)中的每個副本控制器對象維護正確數(shù)量的 Pod樟插。
? ? ? ? c. 端點控制器(Endpoints Controller): 填充端點(Endpoints)對象(即加入 Service 與 Pod)。
???????d. 服務帳戶和令牌控制器(Service Account & Token Controllers): 為新的命名空間創(chuàng)建默認帳戶和 API 訪問令牌.
5.?cloud-controller-manager:?將 k8s與任何其他云集成的最佳方式竿刁,運行特定于云平臺的控制回路
Node 組件
節(jié)點組件在每個節(jié)點上運行黄锤,維護運行的 Pod 并提供 Kubernetes 運行環(huán)境。
kubelet:一個在集群中每個節(jié)點上運行的代理食拜。它保證容器都運行在 Pod 中
kube-proxy:集群中每個節(jié)點上運行的網(wǎng)絡代理
Container Runtime:負責運行容器的軟件鸵熟,k8s支持多個容器運行環(huán)境: docker、 containerd负甸、CRI-O 以及任何實現(xiàn) Kubernetes CRI (容器運行環(huán)境接口).