Kubernetes是什么

Kubernetes是一個(gè)很容易地部署和管理容器化的應(yīng)用軟件系統(tǒng),使用Kubernetes能夠方便對(duì)容器進(jìn)行調(diào)度和編排。

對(duì)應(yīng)用開發(fā)者而言,可以把Kubernetes看成一個(gè)集群操作系統(tǒng)。Kubernetes提供服務(wù)發(fā)現(xiàn)、伸縮、 負(fù)載均衡 、自愈甚至選舉等功能,讓開發(fā)者從基礎(chǔ)設(shè)施相關(guān)配置等解脫出來(lái)。

Kubernetes可以把大量的服務(wù)器看做一臺(tái)巨大的服務(wù)器,在一臺(tái)大服務(wù)器上面運(yùn)行應(yīng)用程序。無(wú)論Kubernetes的集群有多少臺(tái)服務(wù)器,在Kubernetes上部署應(yīng)用程序的方法永遠(yuǎn)一樣。

圖1在Kubernetes集群上運(yùn)行應(yīng)用程序

Kubernetes是什么1

Kubernetes集群架構(gòu)

Kubernetes集群包含master節(jié)點(diǎn)和node節(jié)點(diǎn),應(yīng)用部署在node節(jié)點(diǎn)上,且可以通過(guò)配置選擇應(yīng)用部署在某些特定的節(jié)點(diǎn)上。

Kubernetes集群的架構(gòu)如下所示。

圖2 Kubernetes集群架構(gòu)

Kubernetes是什么2

Master節(jié)點(diǎn)

  • Master節(jié)點(diǎn)是集群的控制節(jié)點(diǎn),由API Server、Scheduler、Controller Manager和ETCD四個(gè)組件構(gòu)成。

  • API Server:各組件互相通訊的中轉(zhuǎn)站,接受外部請(qǐng)求,并將信息寫到ETCD中。

  • Controller Manager:執(zhí)行集群級(jí)功能,例如復(fù)制組件,跟蹤Node節(jié)點(diǎn),處理節(jié)點(diǎn)故障等等。

  • Scheduler:負(fù)責(zé)應(yīng)用調(diào)度的組件,根據(jù)各種條件(如可用的資源、節(jié)點(diǎn)的親和性等)將容器調(diào)度到Node上運(yùn)行。

  • ETCD:一個(gè)分布式數(shù)據(jù)存儲(chǔ)組件,負(fù)責(zé)存儲(chǔ)集群的配置信息。

在生產(chǎn)環(huán)境中,為了保障集群的高可用,通常會(huì)部署多個(gè)master,如CCE集群的高可用模式就是3個(gè)master節(jié)點(diǎn)。

Node節(jié)點(diǎn)

Node節(jié)點(diǎn)是集群的計(jì)算節(jié)點(diǎn),即運(yùn)行容器化應(yīng)用的節(jié)點(diǎn)。

  • kubelet:kubelet主要負(fù)責(zé)同Container Runtime打交道,并與API Server交互,管理節(jié)點(diǎn)上的容器。

  • kube-proxy:應(yīng)用組件間的訪問(wèn)代理,解決節(jié)點(diǎn)上應(yīng)用的訪問(wèn)問(wèn)題。

  • Container Runtime:容器運(yùn)行時(shí),如Docker,最主要的功能是下載 鏡像 和運(yùn)行容器。