日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Docker教程:DockerKubernetes架構(gòu)設(shè)計

基本架構(gòu)和基本概念

任何優(yōu)秀的項目都離不開好的架構(gòu)和設(shè)計藍(lán)圖,在本小節(jié),我們將來看一看Kubernetes是如何規(guī)劃它的架構(gòu)。為了理解和使用Kubernets,我們需要了解Kubernetes的基本概念和作用。

成都創(chuàng)新互聯(lián)從2013年成立,先為桐梓等服務(wù)建站,桐梓等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為桐梓企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

架構(gòu)設(shè)計

  • 節(jié)點(diǎn):一個節(jié)點(diǎn)是一個運(yùn)行Kubernetes中的主機(jī)。
  • 容器組:一個Pod對應(yīng)于由若干容器組成的一個容器組,同個組內(nèi)的容器共享一個存儲卷(volume)。
  • 容器組生命周期:包含所有容器狀態(tài)集合,包括容器組狀態(tài)類型,容器組生命周期,事件,重啟策略,以及replication controllers。
  • Replication Controllers:主要負(fù)責(zé)指定數(shù)量的pod在同一時間一起運(yùn)行。
  • 服務(wù):一個Kubernetes服務(wù)是容器組邏輯的高級抽象,同時也對外提供訪問容器組的策略。
  • 卷:一個卷就是一個目錄,容器對其有訪問權(quán)限。
  • 標(biāo)簽:標(biāo)簽是用來連接一組對象的,比如容器組。標(biāo)簽可以被用來組織和選擇子對象。
  • 接口權(quán)限:端口,ip地址和代理的防火墻規(guī)則。
  • web界面:用戶可以通過web界面操作Kubernetes。
  • 命令行操作:kubecfg命令。

節(jié)點(diǎn)

什么是節(jié)點(diǎn)

在Kubernetes中,節(jié)點(diǎn)是實際工作的點(diǎn),以前叫做Minion。節(jié)點(diǎn)可以是虛擬機(jī)或者物理機(jī)器,依賴于一個集群環(huán)境。每個節(jié)點(diǎn)都有一些必要的服務(wù)以運(yùn)行容器組,并且它們都可以通過主節(jié)點(diǎn)來管理。必要服務(wù)包括docker,kubelet和網(wǎng)絡(luò)代理。

容器狀態(tài)

容器狀態(tài)用來描述節(jié)點(diǎn)的當(dāng)前狀態(tài)?,F(xiàn)在,其中包含三個信息:

主機(jī)IP

主機(jī)IP需要云平臺來查詢,Kubernetes把它作為狀態(tài)的一部分來保存。如果Kubernetes沒有運(yùn)行在云平臺上,節(jié)點(diǎn)ID就是必需的。IP地址可以變化,并且可以包含多種類型的IP地址,如公共IP,私有IP,動態(tài)IP,ipv6等等。

節(jié)點(diǎn)周期

通常來說節(jié)點(diǎn)有 Pending,Running,Terminated三個周期,如果Kubernetes發(fā)現(xiàn)了一個節(jié)點(diǎn)并且其可用,那么Kubernetes就把它標(biāo)記為 Pending。然后在某個時刻,Kubernetes將會標(biāo)記其為 Running。節(jié)點(diǎn)的結(jié)束周期稱為 Terminated。一個已經(jīng)terminated的節(jié)點(diǎn)不會接受和調(diào)度任何請求,并且已經(jīng)在其上運(yùn)行的容器組也會刪除。

節(jié)點(diǎn)狀態(tài)

節(jié)點(diǎn)的狀態(tài)主要是用來描述處于 Running的節(jié)點(diǎn)。當(dāng)前可用的有 NodeReachableNodeReady 。以后可能會增加其他狀態(tài)。NodeReachable 表示集群可達(dá)。NodeReady表示kubelet返回 StatusOk并且HTTP狀態(tài)檢查健康。

節(jié)點(diǎn)管理

節(jié)點(diǎn)并非Kubernetes創(chuàng)建,而是由云平臺創(chuàng)建,或者就是物理機(jī)器、虛擬機(jī)。在Kubernetes中,節(jié)點(diǎn)僅僅是一條記錄,節(jié)點(diǎn)創(chuàng)建之后,Kubernetes會檢查其是否可用。在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校驗節(jié)點(diǎn)可用依賴于id。在當(dāng)前的版本中,有兩個接口可以用來管理節(jié)點(diǎn):節(jié)點(diǎn)控制和Kube管理。

節(jié)點(diǎn)控制

在Kubernetes主節(jié)點(diǎn)中,節(jié)點(diǎn)控制器是用來管理節(jié)點(diǎn)的組件。主要包含:

  • 集群范圍內(nèi)節(jié)點(diǎn)同步
  • 單節(jié)點(diǎn)生命周期管理

節(jié)點(diǎn)控制有一個同步輪尋,主要監(jiān)聽所有云平臺的虛擬實例,會根據(jù)節(jié)點(diǎn)狀態(tài)創(chuàng)建和刪除。可以通過 --node_sync_period標(biāo)志來控制該輪尋。如果一個實例已經(jīng)創(chuàng)建,節(jié)點(diǎn)控制將會為其創(chuàng)建一個結(jié)構(gòu)。同樣的,如果一個節(jié)點(diǎn)被刪除,節(jié)點(diǎn)控制也會刪除該結(jié)構(gòu)。在Kubernetes啟動時可用通過 --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)度,管理的最小單位。

什么是容器組

一個容器組使用相同的Dokcer容器并共享卷(掛載點(diǎn))。一個容器組是一個特定運(yùn)用的打包集合,包含一個或多個容器。

和運(yùn)行的容器類似,一個容器組被認(rèn)為只有很短的運(yùn)行周期。容器組被調(diào)度到一組節(jié)點(diǎn)運(yùn)行,知道容器的生命周期結(jié)束或者其被刪除。如果節(jié)點(diǎn)死掉,運(yùn)行在其上的容器組將會被刪除而不是重新調(diào)度。(也許在將來的版本中會添加容器組的移動)。

容器組設(shè)計的初衷

資源共享和通信

容器組主要是為了數(shù)據(jù)共享和它們之間的通信。

在一個容器組中,容器都使用相同的網(wǎng)絡(luò)地址和端口,可以通過本地網(wǎng)絡(luò)來相互通信。每個容器組都有獨(dú)立的ip,可用通過網(wǎng)絡(luò)來和其他物理主機(jī)或者容器通信。

容器組有一組存儲卷(掛載點(diǎn)),主要是為了讓容器在重啟之后可以不丟失數(shù)據(jù)。

容器組管理

容器組是一個運(yùn)用管理和部署的高層次抽象,同時也是一組容器的接口。容器組是部署、水平放縮的最小單位。

容器組的使用

容器組可以通過組合來構(gòu)建復(fù)雜的運(yùn)用,其本來的意義包含:

  • 內(nèi)容管理,文件和數(shù)據(jù)加載以及本地緩存管理等。
  • 日志和檢查點(diǎn)備份,壓縮,快照等。
  • 監(jiān)聽數(shù)據(jù)變化,跟蹤日志,日志和監(jiān)控代理,消息發(fā)布等。
  • 代理,網(wǎng)橋
  • 控制器,管理,配置以及更新

替代方案

為什么不在一個單一的容器里運(yùn)行多個程序?

  • 1.透明化。為了使容器組中的容器保持一致的基礎(chǔ)設(shè)施和服務(wù),比如進(jìn)程管理和資源監(jiān)控。這樣設(shè)計是為了用戶的便利性。
  • 2.解偶軟件之間的依賴。每個容器都可能重新構(gòu)建和發(fā)布,Kubernetes必須支持熱發(fā)布和熱更新(將來)。
  • 3.方便使用。用戶不必運(yùn)行獨(dú)立的程序管理,也不用擔(dān)心每個運(yùn)用程序的退出狀態(tài)。
  • 4.高效??紤]到基礎(chǔ)設(shè)施有更多的職責(zé),容器必須要輕量化。

容器組生命周期

本小結(jié)將會簡單描述容器狀態(tài)類型,容器組生命周期,事件,重啟策略和復(fù)制控制器。

狀態(tài)值

pending

容器組已經(jīng)被節(jié)點(diǎn)接受,但有一個或多個容器還沒有運(yùn)行起來。這將包含某些節(jié)點(diǎn)正在下載鏡像的時間,這種情形會依賴于網(wǎng)絡(luò)情況。

running

容器組已經(jīng)被調(diào)度到節(jié)點(diǎn),并且所有的容器都已經(jīng)啟動。至少有一個容器處于運(yùn)行狀態(tài)(或者處于重啟狀態(tài))。

succeeded

所有的容器都正常退出。

failed

容器組中所有容器都意外中斷了。

容器組生命周期

通常來說,如果容器組被創(chuàng)建了就不會自動銷毀,除非被某種行為出發(fā),而觸發(fā)此種情況可能是人為,或者復(fù)制控制器所為。唯一例外的是容器組由 succeeded狀態(tài)成功退出,或者在一定時間內(nèi)重試多次依然失敗。

如果某個節(jié)點(diǎn)死掉或者不能連接,那么節(jié)點(diǎn)控制器將會標(biāo)記其上的容器組的狀態(tài)為 failed

舉例

  • 容器組狀態(tài) running,有1容器,容器正常退出- 記錄完成事件
  • 如果重啟策略為:- 始終:重啟容器,容器組保持 running
  • 失敗時:容器組變?yōu)?succeeded
  • 從不:容器組變?yōu)?succeeded

  • 容器組狀態(tài) running,有1容器,容器異常退出- 記錄失敗事件
  • 如果重啟策略為:- 始終:重啟容器,容器組保持 running
  • 失敗時:重啟容器,容器組保持 running
  • 從不:容器組變?yōu)?failed

  • 容器組狀態(tài) running,有2容器,有1容器異常退出- 記錄失敗事件
  • 如果重啟策略為:- 始終:重啟容器,容器組保持 running
  • 失敗時:重啟容器,容器組保持 running
  • 從不:容器組保持 running- 當(dāng)有2容器退出

  • 記錄失敗事件
  • 如果重啟策略為:- 始終:重啟容器,容器組保持 running
  • 失敗時:重啟容器,容器組保持 running
  • 從不:容器組變?yōu)?failed

  • 容器組狀態(tài) running,容器內(nèi)存不足- 標(biāo)記容器錯誤中斷
  • 記錄內(nèi)存不足事件
  • 如果重啟策略為:- 始終:重啟容器,容器組保持 running
  • 失敗時:重啟容器,容器組保持 running
  • 從不:記錄錯誤事件,容器組變?yōu)?failed

  • 容器組狀態(tài) running,一塊磁盤死掉- 殺死所有容器
  • 記錄事件
  • 容器組變?yōu)?failed
  • 如果容器組運(yùn)行在一個控制器下,容器組將會在其他地方重新創(chuàng)建

  • 容器組狀態(tài) running,對應(yīng)的節(jié)點(diǎn)段溢出- 節(jié)點(diǎn)控制器等到超時
  • 節(jié)點(diǎn)控制器標(biāo)記容器組 failed
  • 如果容器組運(yùn)行在一個控制器下,容器組將會在其他地方重新創(chuàng)建

Replication Controllers

服務(wù)

標(biāo)簽

接口權(quán)限

web界面

命令行操作


分享名稱:創(chuàng)新互聯(lián)Docker教程:DockerKubernetes架構(gòu)設(shè)計
路徑分享:http://m.5511xx.com/article/djpcicg.html