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

節(jié)點

什么是節(jié)點

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

容器狀態(tài)

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

主機(jī)IP

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

節(jié)點周期

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

節(jié)點狀態(tài)

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

節(jié)點管理

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

節(jié)點控制

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

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

節(jié)點控制有一個同步輪尋,主要監(jiān)聽所有云平臺的虛擬實例,會根據(jù)節(jié)點狀態(tài)創(chuàng)建和刪除??梢酝ㄟ^ --node_sync_period標(biāo)志來控制該輪尋。如果一個實例已經(jīng)創(chuàng)建,節(jié)點控制將會為其創(chuàng)建一個結(jié)構(gòu)。同樣的,如果一個節(jié)點被刪除,節(jié)點控制也會刪除該結(jié)構(gòu)。在Kubernetes啟動時可用通過 --machines標(biāo)記來顯示指定節(jié)點。同樣可以使用 kubectl來一條一條的添加節(jié)點,兩者是相同的。通過設(shè)置 --sync_nodes=false標(biāo)記來禁止集群之間的節(jié)點同步,你也可以使用api/kubectl 命令行來增刪節(jié)點。

容器組

在Kubernetes中,使用的最小單位是容器組,容器組是創(chuàng)建,調(diào)度,管理的最小單位。

什么是容器組

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

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

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

資源共享和通信

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

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

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

容器組管理

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

容器組的使用

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

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

替代方案

為什么不在一個單一的容器里運行多個程序?

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

容器組生命周期

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

狀態(tài)值

pending

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

running

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

succeeded

所有的容器都正常退出。

failed

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

容器組生命周期

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

如果某個節(jié)點死掉或者不能連接,那么節(jié)點控制器將會標(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
  • 如果容器組運行在一個控制器下,容器組將會在其他地方重新創(chuàng)建

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

Replication Controllers

服務(wù)

標(biāo)簽

接口權(quán)限

web界面

命令行操作


網(wǎng)站名稱:創(chuàng)新互聯(lián)Docker教程:DockerKubernetes架構(gòu)設(shè)計
網(wǎng)站鏈接:http://www.5511xx.com/article/djpcicg.html