日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Docker:作為開源的應(yīng)用容器引擎,可以把應(yīng)用程序和其相關(guān)依賴打包生成一個Image鏡像文件,是一個標(biāo)準(zhǔn)的運行環(huán)境,提供可持續(xù)交付的能力。

一、背景

基于分布式的架構(gòu)中,需要管理的服務(wù)是非常多的,無論是服務(wù)的數(shù)量還是體系劃分;

從服務(wù)的能力上看,可以進(jìn)行分層管控,只是其中有相當(dāng)一部分服務(wù)層,改動更新的頻率很低,所以感知也不明顯;

 

圖片

 

就以自己當(dāng)下參與研發(fā)的系統(tǒng)來說;

通過K8S進(jìn)行管理的服務(wù)近百個,這中間有部分服務(wù)采用集群模式,即便是這個規(guī)模的系統(tǒng),也幾乎不可能依賴純?nèi)斯み\維的形式,自動化流程必不可少;

二、持續(xù)集成

此前圍繞該主題寫過一個完整的實踐案例,主要圍繞Jenkins、Docker、K8S等組件的使用層面,總結(jié)源碼編譯、打包、鏡像構(gòu)建、部署等自動化管理的流程;

 

圖片

 

Jenkins:是一個擴(kuò)展性非常強(qiáng)的軟件,用于自動化各種任務(wù),包括構(gòu)建、測試和部署等;

Docker:作為開源的應(yīng)用容器引擎,可以把應(yīng)用程序和其相關(guān)依賴打包生成一個Image鏡像文件,是一個標(biāo)準(zhǔn)的運行環(huán)境,提供可持續(xù)交付的能力;

Kube.NETes:作為開源的容器編排引擎,用來對容器化應(yīng)用進(jìn)行自動化部署、 擴(kuò)縮和管理;

三、K8S架構(gòu)

1、核心組件

 

圖片

 

Control-Plane-Components:控制平面組件

對集群做出全局決策,例如:資源調(diào)度、檢測、事件響應(yīng),可以在集群中的任何節(jié)點上運行;

  • api:開放K8S的API,組件之間通過API交互,相當(dāng)于控制面的前端;
  • controllermanager:運行控制器進(jìn)程,邏輯上是一個單獨的進(jìn)程;
  • scheduler:監(jiān)聽新建未指定運行節(jié)點的Pods,并為Pod選擇運行節(jié)點;
  • etcd:兼具一致性和高可用性的鍵值數(shù)據(jù)庫,作為保存K8S數(shù)據(jù)的后臺庫;

Node:節(jié)點組件

該組件會在每個節(jié)點上運行,負(fù)責(zé)維護(hù)運行的Pod并提供Kubernetes運行環(huán)境;

  • kubelet:在每個節(jié)點上運行的代理,保證容器都運行在Pod中;
  • kube-proxy:每個節(jié)點上運行的網(wǎng)絡(luò)代理, 維護(hù)節(jié)點上的網(wǎng)絡(luò)規(guī)則;

ContAIner-Runtime:容器運行時

負(fù)責(zé)運行容器的軟件,支持Docker、containerd、CRI-O等多個容器運行環(huán)境,以及任何實現(xiàn)Kubernetes-CRI容器運行環(huán)境接口;

2、分層結(jié)構(gòu)

從整體的功能上來考慮,K8S集群可以分為:用戶、控制平面、節(jié)點三個模塊;

 

圖片

 

用戶側(cè):不論是CLI命令行還是UI界面,會與控制面板的APIserver進(jìn)行交互,APIserver再與其他組件交互,最終執(zhí)行相應(yīng)的操作命令;

控制平面:以前也稱為Master,核心組件包括APIserver、controller、scheduler、etcd,主要用來調(diào)度整個集群,以及做出全局決策;

節(jié)點:通過將容器放入在節(jié)點上運行的Pod中來執(zhí)行工作負(fù)載,簡單的理解工作負(fù)載就是各種應(yīng)用程序等,節(jié)點上的核心組件包括Pod、kubelet、Container-Runtime、kube-proxy等;

3、核心能力

站在研發(fā)的視角來看,K8S提供極其強(qiáng)大的應(yīng)用服務(wù)管理能力;

3.1 發(fā)現(xiàn)與負(fù)載

服務(wù)Service可以將運行在一個或一組Pod上的網(wǎng)絡(luò)應(yīng)用程序公開為網(wǎng)絡(luò)服務(wù)的方法,通常使用標(biāo)簽對資源對象進(jìn)行篩選過濾;

 

圖片

 

3.2 調(diào)度

調(diào)度器通過監(jiān)測機(jī)制來發(fā)現(xiàn)集群中新創(chuàng)建且尚未被調(diào)度到節(jié)點上的Pod,由于Pod中的容器和Pod本身可能有不同的資源要求,調(diào)度會將Pod放置到合適的節(jié)點上;

 

圖片

 

3.3 自動伸縮

K8S可以通過指標(biāo)檢查工作負(fù)載的資源需求,例如CPU利用率、響應(yīng)時長、內(nèi)存利用率、或者其他,從而判斷是否需要執(zhí)行伸縮,垂直維度可以是更多的資源分配,水平維度可以是更多的集群部署;

 

圖片

 

K8S可以自動伸縮,也具備自動修復(fù)的能力,當(dāng)節(jié)點故障或者應(yīng)用服務(wù)異常時,會被檢查到,可能會進(jìn)行節(jié)點遷移或者重啟;

四、應(yīng)用案例

1、服務(wù)部署

在此前的實踐案例中,用CLI命令行和腳本文件的方式,完成的部署動作,而在整個流程中涉及集群的多個組件協(xié)作,多次的通信和調(diào)度;

kubectl create -f pod.yaml

 

圖片

 

2、交互流程

 

圖片

 

【1】CLI命令行和UI界面,都是通過APIserver接口,與集群內(nèi)部組件交互,比如上述的Pod部署操作;

【2】在APIserver收到請求之后,會將序列化狀態(tài)的對象寫入到etcd中完成存儲操作;

【3】Scheduler調(diào)度器通過監(jiān)測(Watch)機(jī)制來發(fā)現(xiàn)集群中新創(chuàng)建且尚未被調(diào)度到節(jié)點上的Pod;

【4】在集群中找到一個Pod的所有可調(diào)度節(jié)點,對這些可調(diào)度節(jié)點打分,選出其中得分最高的節(jié)點來運行Pod,然后調(diào)度器將這個調(diào)度決定通知給APIserver;

【5】APIserver完成信息存儲后,然后通知相應(yīng)節(jié)點的Kubelet;

【6】Kubelet是基于PodSpec來工作的,確保這些PodSpec中描述的容器處于運行狀態(tài)且運行狀況良好,每個PodSpec是一個描述Pod的YAML或JSON對象;

【7】Pod是可以在Kubernetes中創(chuàng)建和管理的、最小的可部署的計算單元,包括一個或多個容器;

五、參考源碼

文檔倉庫:
https://gitee.com/cicadasmile/butte-JAVA-note

腳本倉庫:
https://gitee.com/cicadasmile/butte-auto-parent

 

分享到:
標(biāo)簽:K8S
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定