天天看點

k8s系統架構圖(二)

一個K8S叢集由兩部分構成 master節點和node節點。

master節點主要負責叢集的控制,對pod進行排程,已經令牌管理等等功能。

node節點主要是負責幹活,啟動容器、管理容器。

master節點和node節點一般不要部署在一台機器上。

上面這個架構圖,舉例是一個master節點和2個node節點。但實際生産上,從高可用考慮,是需要部署多個master節點的。

将這張圖抽象一下,大約是這個樣子

k8s系統架構圖(二)

master節點中又有很多元件

k8s系統架構圖(二)

主要的是:

Api Server:對外暴露K8S的api接口,是外界進行資源操作的唯一入口,并提供認證、授權、通路控制、API注冊和發現等機制;

scheduler負責資源的排程,按照預定的排程政策将Pod排程到相應的機器上;就是監視新建立的 Pod,如果沒有配置設定節點,就選擇一個節點供他們運作,這就是pod的排程

controller manager負責維護叢集的狀态,比如故障檢測、自動擴充、滾動更新等,它們是處理叢集中正常任務的背景線程

etcd:kubernetes的後端資料庫,k/v方式存儲,所有的k8s叢集資料都存放在此處。儲存了整個叢集的狀态

其中有kube-scheduler和kube-controller-manager兩個元件是有leader選舉的,這個選舉機制是k8s對于這兩個元件的高可用保障。

apiserver是可以水準擴充的。

Node節點的元件:

kubelet負責維護容器的生命周期,同時也負責Volume(CSI)和網絡(CNI)的管理;

kube-proxy負責為Service提供cluster内部的服務發現和負載均衡;

fluentd 是一個守護程序,它有助于提供叢集層面日志 叢集層面的日志

再來一張綜合起來的圖:

k8s系統架構圖(二)

解釋圖中的幾個詞:

CNI、CRI和CSI都是K8S的開放接口

Kubernetes作為雲原生應用的基礎排程平台,相當于雲原生的作業系統,為了便于系統的擴充,Kubernetes中開放的以下接口,可以分别對接不同的後端,來實作自己的業務邏輯:

CRI(Container Runtime Interface):容器運作時接口,提供計算資源CNI(Container Network Interface):容器網絡接口,提供網絡資源CSI(Container Storage Interface):容器存儲接口,提供存儲資源

這幾個屬于進階内容,新手先不用管。

另外附一個參考高可用部署架構:

k8s系統架構圖(二)

在每台node節點上安裝nginx,nginx通過内部的負載均衡将node節點上需要通過通路master,kube-apiserver元件的請求,反代到兩台k8s-master節點上,這樣就可以實作master節點的高可用,當任意一台master節點當機後,也可以通過nginx負載均衡放文檔另一個master節點上

//來自百家号:IT有意思

繼續閱讀