Kubernets 架構(gòu)

我們把服務(wù)分為運(yùn)行在工作節(jié)點(diǎn)上的服務(wù)和組成集群級(jí)別控制板的服務(wù) 。
節(jié)點(diǎn)有運(yùn)行應(yīng)用容器必備的服務(wù),而這些都是受Master控制。
K8s主要由以下核心組件組成,主要分為Control Plance和node上的組件。
Kubernets 集群組件

Master 負(fù)責(zé)管理整個(gè)集群。?Master 協(xié)調(diào)集群中的所有活動(dòng),例如調(diào)度應(yīng)用、維護(hù)應(yīng)用的所需狀態(tài)、應(yīng)用擴(kuò)容以及推出新的更新。
Node 是一個(gè)虛擬機(jī)或者物理機(jī),它在 Kubernetes 集群中充當(dāng)工作機(jī)器的角色?每個(gè)Node都有 Kubelet , 它管理 Node 而且是 Node 與 Master 通信的代理。 Node 還應(yīng)該具有用于??處理容器操作的工具,例如 Docker 或 rkt 。處理生產(chǎn)級(jí)流量的 Kubernetes 集群至少應(yīng)具有三個(gè) Node 。
? 所有相互關(guān)聯(lián)組件的 Kubernetes 集群如下:

????????從圖中可看到?一個(gè) Kubernetes (后面簡(jiǎn)稱K8s)集群由一組節(jié)點(diǎn)(nodes)的機(jī)器以及集群的控制服務(wù)(Control Plane)組成。
????????工作節(jié)點(diǎn)(worker nodes)托管作為應(yīng)用程序組件的 Pod 。主集群的控制服務(wù)管理集群中的工作節(jié)點(diǎn)和 Pod。
各個(gè)組件的理解
?Control Plane Components
控制平面的組件對(duì)集群做出全局決策(比如調(diào)度),以及檢測(cè)和響應(yīng)集群事件(例如,當(dāng)不滿足部署的?replicas?字段時(shí),啟動(dòng)新的?pod)。由以下組件組成
1.?kube-apiserver:?是Control Plane 的組件, 該組件公開了 k8s的API。 可以理解為是控制面的前端。設(shè)計(jì)上考慮了水平伸縮,可通過部署多個(gè)實(shí)例進(jìn)行伸縮。
2.?etcd:是兼具一致性和高可用性的鍵值數(shù)據(jù)庫,可以作為保存 Kubernetes 所有集群數(shù)據(jù)的后臺(tái)數(shù)據(jù)庫。
3. kube-scheduler:監(jiān)視那些新創(chuàng)建的未指定運(yùn)行節(jié)點(diǎn)的 Pod,并選擇節(jié)點(diǎn)讓 Pod 在上面運(yùn)行。
4.?kube-controller-manager:運(yùn)行控制器的組件,這些控制器包括:
? ? ? ? a. 節(jié)點(diǎn)控制器(Node Controller): 負(fù)責(zé)在節(jié)點(diǎn)出現(xiàn)故障時(shí)進(jìn)行通知和響應(yīng)。
? ? ? ? b. 副本控制器(Replication Controller): 負(fù)責(zé)為系統(tǒng)中的每個(gè)副本控制器對(duì)象維護(hù)正確數(shù)量的 Pod。
? ? ? ? c. 端點(diǎn)控制器(Endpoints Controller): 填充端點(diǎn)(Endpoints)對(duì)象(即加入 Service 與 Pod)。
???????d. 服務(wù)帳戶和令牌控制器(Service Account & Token Controllers): 為新的命名空間創(chuàng)建默認(rèn)帳戶和 API 訪問令牌.
5.?cloud-controller-manager:?將 k8s與任何其他云集成的最佳方式,運(yùn)行特定于云平臺(tái)的控制回路
Node 組件
節(jié)點(diǎn)組件在每個(gè)節(jié)點(diǎn)上運(yùn)行,維護(hù)運(yùn)行的 Pod 并提供 Kubernetes 運(yùn)行環(huán)境。
kubelet:一個(gè)在集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的代理。它保證容器都運(yùn)行在 Pod 中
kube-proxy:集群中每個(gè)節(jié)點(diǎn)上運(yùn)行的網(wǎng)絡(luò)代理
Container Runtime:負(fù)責(zé)運(yùn)行容器的軟件,k8s支持多個(gè)容器運(yùn)行環(huán)境: docker、 containerd、CRI-O 以及任何實(shí)現(xiàn) Kubernetes CRI (容器運(yùn)行環(huán)境接口).