- Kubernetes源碼剖析
- 鄭東旭
- 970字
- 2020-07-23 17:12:14
1.2 Kubernetes架構(gòu)圖
Kubernetes系統(tǒng)用于管理分布式節(jié)點(diǎn)集群中的微服務(wù)或容器化應(yīng)用程序,并且其提供了零停機(jī)時(shí)間部署、自動(dòng)回滾、縮放和容器的自愈(其中包括自動(dòng)配置、自動(dòng)重啟、自動(dòng)復(fù)制的高彈性基礎(chǔ)設(shè)施,以及容器的自動(dòng)縮放等)等功能。
Kubernetes系統(tǒng)最重要的設(shè)計(jì)因素之一是能夠橫向擴(kuò)展,即調(diào)整應(yīng)用程序的副本數(shù)以提高可用性。設(shè)計(jì)一套大型系統(tǒng),且保證其運(yùn)行時(shí)健壯、可擴(kuò)展、可移植和非常具有挑戰(zhàn)性,尤其是在系統(tǒng)復(fù)雜度增加時(shí),系統(tǒng)的體系結(jié)構(gòu)會(huì)直接影響其運(yùn)行方式、對(duì)環(huán)境的依賴程度及相關(guān)組件的耦合程度。
微服務(wù)是一種軟件設(shè)計(jì)模式,適用于集群上的可擴(kuò)展部署。開(kāi)發(fā)人員使用這一模式能夠創(chuàng)建小型、可組合的應(yīng)用程序,通過(guò)定義良好的HTTP REST API接口進(jìn)行通信。Kubernetes也是遵循微服務(wù)架構(gòu)模式的程序,具有彈性、可觀察性和管理功能,可以適應(yīng)云平臺(tái)的需求。
Kubernetes的系統(tǒng)架構(gòu)設(shè)計(jì)與Borg的系統(tǒng)架構(gòu)設(shè)計(jì)理念非常相似,如Scheduler調(diào)度器、Pod資源對(duì)象管理等。Kubernetes總架構(gòu)圖如圖1-1所示。

圖1-1 Kubernetes總架構(gòu)圖
Kubernetes系統(tǒng)架構(gòu)遵循客戶端/服務(wù)端(C/S)架構(gòu),系統(tǒng)架構(gòu)分為Master和Node兩部分,Master作為服務(wù)端,Node作為客戶端。Kubernetes系統(tǒng)具有多個(gè)Master服務(wù)端,可以實(shí)現(xiàn)高可用。在默認(rèn)的情況下,一個(gè)Master服務(wù)端即可完成所有工作。
Master服務(wù)端也被稱為主控節(jié)點(diǎn),它在集群中主要負(fù)責(zé)如下任務(wù)。
(1)集群的“大腦”,負(fù)責(zé)管理所有節(jié)點(diǎn)(Node)。
(2)負(fù)責(zé)調(diào)度Pod在哪些節(jié)點(diǎn)上運(yùn)行。
(3)負(fù)責(zé)控制集群運(yùn)行過(guò)程中的所有狀態(tài)。
Node客戶端也被稱為工作節(jié)點(diǎn),它在集群中主要負(fù)責(zé)如下任務(wù)。
(1)負(fù)責(zé)管理所有容器(Container)。
(2)負(fù)責(zé)監(jiān)控/上報(bào)所有Pod的運(yùn)行狀態(tài)。
Master服務(wù)端(主控節(jié)點(diǎn))主要負(fù)責(zé)管理和控制整個(gè)Kubernetes集群,對(duì)集群做出全局性決策,相當(dāng)于整個(gè)集群的“大腦”。集群所執(zhí)行的所有控制命令都由Master服務(wù)端接收并處理。Master服務(wù)端主要包含如下組件。
● kube-apiserver組件:集群的HTTP REST API接口,是集群控制的入口。
● kube-controller-manager組件:集群中所有資源對(duì)象的自動(dòng)化控制中心。
● kube-scheduler組件:集群中Pod資源對(duì)象的調(diào)度服務(wù)。
Node客戶端(工作節(jié)點(diǎn))是Kubernetes集群中的工作節(jié)點(diǎn),Node節(jié)點(diǎn)上的工作由Master服務(wù)端進(jìn)行分配,比如當(dāng)某個(gè)Node節(jié)點(diǎn)宕機(jī)時(shí),Master節(jié)點(diǎn)會(huì)將其上面的工作轉(zhuǎn)移到其他Node節(jié)點(diǎn)上。Node節(jié)點(diǎn)主要包含如下組件。
● kubelet組件:負(fù)責(zé)管理節(jié)點(diǎn)上容器的創(chuàng)建、刪除、啟停等任務(wù),與Master節(jié)點(diǎn)進(jìn)行通信。
● kube-proxy組件:負(fù)責(zé)Kubernetes服務(wù)的通信及負(fù)載均衡服務(wù)。
● container組件:負(fù)責(zé)容器的基礎(chǔ)管理服務(wù),接收kubelet組件的指令。
下面讓我們深入了解每個(gè)節(jié)點(diǎn)上運(yùn)行的組件。
- Node.js 10實(shí)戰(zhàn)
- JavaScript修煉之道
- Visual Basic程序開(kāi)發(fā)(學(xué)習(xí)筆記)
- LabVIEW入門(mén)與實(shí)戰(zhàn)開(kāi)發(fā)100例
- Clojure for Domain:specific Languages
- FLL+WRO樂(lè)高機(jī)器人競(jìng)賽教程:機(jī)械、巡線與PID
- Modern JavaScript Applications
- Getting Started with NativeScript
- Express Web Application Development
- Mastering ArcGIS Enterprise Administration
- FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線
- INSTANT Apache ServiceMix How-to
- Microsoft HoloLens By Example
- Access數(shù)據(jù)庫(kù)應(yīng)用教程(2010版)
- Kotlin語(yǔ)言實(shí)例精解