W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
任何優(yōu)秀的項(xiàng)目都離不開好的架構(gòu)和設(shè)計(jì)藍(lán)圖,在本小節(jié),我們將來看一看Kubernetes是如何規(guī)劃它的架構(gòu)。為了理解和使用Kubernets,我們需要了解Kubernetes的基本概念和作用。
kubecfg
命令。在Kubernetes中,節(jié)點(diǎn)是實(shí)際工作的點(diǎn),以前叫做Minion。節(jié)點(diǎn)可以是虛擬機(jī)或者物理機(jī)器,依賴于一個(gè)集群環(huán)境。每個(gè)節(jié)點(diǎn)都有一些必要的服務(wù)以運(yùn)行容器組,并且它們都可以通過主節(jié)點(diǎn)來管理。必要服務(wù)包括docker,kubelet和網(wǎng)絡(luò)代理。
容器狀態(tài)用來描述節(jié)點(diǎn)的當(dāng)前狀態(tài)?,F(xiàn)在,其中包含三個(gè)信息:
主機(jī)IP需要云平臺(tái)來查詢,Kubernetes把它作為狀態(tài)的一部分來保存。如果Kubernetes沒有運(yùn)行在云平臺(tái)上,節(jié)點(diǎn)ID就是必需的。IP地址可以變化,并且可以包含多種類型的IP地址,如公共IP,私有IP,動(dòng)態(tài)IP,ipv6等等。
通常來說節(jié)點(diǎn)有 Pending
,Running
,Terminated
三個(gè)周期,如果Kubernetes發(fā)現(xiàn)了一個(gè)節(jié)點(diǎn)并且其可用,那么Kubernetes就把它標(biāo)記為 Pending
。然后在某個(gè)時(shí)刻,Kubernetes將會(huì)標(biāo)記其為 Running
。節(jié)點(diǎn)的結(jié)束周期稱為 Terminated
。一個(gè)已經(jīng)terminated的節(jié)點(diǎn)不會(huì)接受和調(diào)度任何請(qǐng)求,并且已經(jīng)在其上運(yùn)行的容器組也會(huì)刪除。
節(jié)點(diǎn)的狀態(tài)主要是用來描述處于 Running
的節(jié)點(diǎn)。當(dāng)前可用的有 NodeReachable
和 NodeReady
。以后可能會(huì)增加其他狀態(tài)。NodeReachable
表示集群可達(dá)。NodeReady
表示kubelet返回 StatusOk并且HTTP狀態(tài)檢查健康。
節(jié)點(diǎn)并非Kubernetes創(chuàng)建,而是由云平臺(tái)創(chuàng)建,或者就是物理機(jī)器、虛擬機(jī)。在Kubernetes中,節(jié)點(diǎn)僅僅是一條記錄,節(jié)點(diǎn)創(chuàng)建之后,Kubernetes會(huì)檢查其是否可用。在Kubernetes中,節(jié)點(diǎn)用如下結(jié)構(gòu)保存:
{
"id": "10.1.2.3",
"kind": "Minion",
"apiVersion": "v1beta1",
"resources": {
"capacity": {
"cpu": 1000,
"memory": 1073741824
},
},
"labels": {
"name": "my-first-k8s-node",
},
}
Kubernetes校驗(yàn)節(jié)點(diǎn)可用依賴于id。在當(dāng)前的版本中,有兩個(gè)接口可以用來管理節(jié)點(diǎn):節(jié)點(diǎn)控制和Kube管理。
在Kubernetes主節(jié)點(diǎn)中,節(jié)點(diǎn)控制器是用來管理節(jié)點(diǎn)的組件。主要包含:
節(jié)點(diǎn)控制有一個(gè)同步輪尋,主要監(jiān)聽所有云平臺(tái)的虛擬實(shí)例,會(huì)根據(jù)節(jié)點(diǎn)狀態(tài)創(chuàng)建和刪除。可以通過 --node_sync_period
標(biāo)志來控制該輪尋。如果一個(gè)實(shí)例已經(jīng)創(chuàng)建,節(jié)點(diǎn)控制將會(huì)為其創(chuàng)建一個(gè)結(jié)構(gòu)。同樣的,如果一個(gè)節(jié)點(diǎn)被刪除,節(jié)點(diǎn)控制也會(huì)刪除該結(jié)構(gòu)。在Kubernetes啟動(dòng)時(shí)可用通過 --machines
標(biāo)記來顯示指定節(jié)點(diǎn)。同樣可以使用 kubectl
來一條一條的添加節(jié)點(diǎn),兩者是相同的。通過設(shè)置 --sync_nodes=false
標(biāo)記來禁止集群之間的節(jié)點(diǎn)同步,你也可以使用api/kubectl 命令行來增刪節(jié)點(diǎn)。
在Kubernetes中,使用的最小單位是容器組,容器組是創(chuàng)建,調(diào)度,管理的最小單位。
一個(gè)容器組使用相同的Dokcer容器并共享卷(掛載點(diǎn))。一個(gè)容器組是一個(gè)特定運(yùn)用的打包集合,包含一個(gè)或多個(gè)容器。
和運(yùn)行的容器類似,一個(gè)容器組被認(rèn)為只有很短的運(yùn)行周期。容器組被調(diào)度到一組節(jié)點(diǎn)運(yùn)行,知道容器的生命周期結(jié)束或者其被刪除。如果節(jié)點(diǎn)死掉,運(yùn)行在其上的容器組將會(huì)被刪除而不是重新調(diào)度。(也許在將來的版本中會(huì)添加容器組的移動(dòng))。
容器組主要是為了數(shù)據(jù)共享和它們之間的通信。
在一個(gè)容器組中,容器都使用相同的網(wǎng)絡(luò)地址和端口,可以通過本地網(wǎng)絡(luò)來相互通信。每個(gè)容器組都有獨(dú)立的ip,可用通過網(wǎng)絡(luò)來和其他物理主機(jī)或者容器通信。
容器組有一組存儲(chǔ)卷(掛載點(diǎn)),主要是為了讓容器在重啟之后可以不丟失數(shù)據(jù)。
容器組是一個(gè)運(yùn)用管理和部署的高層次抽象,同時(shí)也是一組容器的接口。容器組是部署、水平放縮的最小單位。
容器組可以通過組合來構(gòu)建復(fù)雜的運(yùn)用,其本來的意義包含:
為什么不在一個(gè)單一的容器里運(yùn)行多個(gè)程序?
本小結(jié)將會(huì)簡(jiǎn)單描述容器狀態(tài)類型,容器組生命周期,事件,重啟策略和復(fù)制控制器。
容器組已經(jīng)被節(jié)點(diǎn)接受,但有一個(gè)或多個(gè)容器還沒有運(yùn)行起來。這將包含某些節(jié)點(diǎn)正在下載鏡像的時(shí)間,這種情形會(huì)依賴于網(wǎng)絡(luò)情況。
容器組已經(jīng)被調(diào)度到節(jié)點(diǎn),并且所有的容器都已經(jīng)啟動(dòng)。至少有一個(gè)容器處于運(yùn)行狀態(tài)(或者處于重啟狀態(tài))。
所有的容器都正常退出。
容器組中所有容器都意外中斷了。
通常來說,如果容器組被創(chuàng)建了就不會(huì)自動(dòng)銷毀,除非被某種行為出發(fā),而觸發(fā)此種情況可能是人為,或者復(fù)制控制器所為。唯一例外的是容器組由 succeeded狀態(tài)成功退出,或者在一定時(shí)間內(nèi)重試多次依然失敗。
如果某個(gè)節(jié)點(diǎn)死掉或者不能連接,那么節(jié)點(diǎn)控制器將會(huì)標(biāo)記其上的容器組的狀態(tài)為 failed
。
running
,有1容器,容器正常退出- 記錄完成事件running
succeeded
從不:容器組變?yōu)?succeeded
running
,有1容器,容器異常退出- 記錄失敗事件running
running
從不:容器組變?yōu)?failed
running
,有2容器,有1容器異常退出- 記錄失敗事件running
running
從不:容器組保持 running
- 當(dāng)有2容器退出
running
running
從不:容器組變?yōu)?failed
running
,容器內(nèi)存不足- 標(biāo)記容器錯(cuò)誤中斷running
running
從不:記錄錯(cuò)誤事件,容器組變?yōu)?failed
running
,一塊磁盤死掉- 殺死所有容器failed
如果容器組運(yùn)行在一個(gè)控制器下,容器組將會(huì)在其他地方重新創(chuàng)建
running
,對(duì)應(yīng)的節(jié)點(diǎn)段溢出- 節(jié)點(diǎn)控制器等到超時(shí)failed
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: