華為云云原生鉆石集訓(xùn)營(yíng) 第八課:Kubernetes運(yùn)維管理詳解(上)

      網(wǎng)友投稿 811 2022-05-29

      課程目標(biāo):

      1.了解工作負(fù)載更新和回滾機(jī)制

      2.了解應(yīng)用探針健康檢查機(jī)制

      3.了解應(yīng)用彈性伸縮原理

      目錄:

      1.工作負(fù)載更新和回滾機(jī)制詳解

      2.應(yīng)用探針健康檢查機(jī)制詳解

      3.應(yīng)用彈性伸縮原理詳解

      之前的課程,我們了解了應(yīng)用在K8S中的基本類(lèi)型和概念,包括無(wú)狀態(tài)工作負(fù)載(deployment) 、有狀態(tài)工作負(fù)載(StatefulSet)等。

      本次課程將會(huì)帶領(lǐng)大家深入理解應(yīng)用在k8s生產(chǎn)環(huán)境的最佳實(shí)踐,包括應(yīng)用更新與回滾,應(yīng)用健康檢查,彈性伸縮等特性。

      1.工作負(fù)載更新和回滾機(jī)制詳解

      無(wú)狀態(tài)工作負(fù)載(deployment)更新

      Deployment可以設(shè)置不同的更新策略,有如下兩種:

      1.Recreate:停止所有舊版本然后部署新版本(最好只在開(kāi)發(fā)環(huán)境使用)

      2.RollingUpdate:滾動(dòng)升級(jí),即逐步創(chuàng)建新Pod再刪除l舊Pod,為默認(rèn)策略。

      Deployment可以通過(guò)maxSurge和maxUnavailable兩個(gè)參數(shù)控制升級(jí)過(guò)程中重新創(chuàng)建Pod的比例:

      maxSurge: 與Deployment中spec.replicas相比,可以有多少個(gè)Pod存在,默認(rèn)值是25%,比如spec.replicas為4,那升級(jí)過(guò)程中就不能超過(guò)5個(gè)Pod存在,即按1個(gè)的步伐升級(jí)。

      maxUnavailable: 與Deployment中spec.replicas相比,可以有多少個(gè)Pod失效,也就是刪除的比例,默認(rèn)值是25%,比如spec.replicas為4,那升級(jí)過(guò)程中就至少有3個(gè)Pod存在,即刪除Pod的步伐是1。

      無(wú)狀態(tài)工作負(fù)載(deployment)回滾

      在更新出問(wèn)題之后,可能需要對(duì)應(yīng)用進(jìn)行回滾。k8s支持根據(jù)deployment的歷史版本進(jìn)行回滾

      有狀態(tài)工作負(fù)載(StatefulSet)更新

      StatefulSet可以設(shè)置不同的更新策略,有如下兩種:

      OnDelete:用戶必須手動(dòng)刪除Pod以便讓控制器創(chuàng)建新的Pod

      RollingUpdate:滾動(dòng)更新過(guò)程也跟Deployment大致相同,區(qū)別在于:

      滾動(dòng)更新的過(guò)程是有序的(逆序),index從N-1到0逐個(gè)依次進(jìn)行,并且下一個(gè)Pod創(chuàng)建必須是前一個(gè)Pod Ready為前提,下一個(gè)Pod刪除必須是前一個(gè)Pod shutdown并完全刪除為前提。

      支持部分實(shí)例滾動(dòng)更新,部分不更新,通過(guò).spec.updateStrategy.rollingUpdate.partition來(lái)指定一個(gè)index分界點(diǎn)。所有id大于等于partition指定的值的Pods將會(huì)進(jìn)行滾動(dòng)更新;所有id小于partition指定的值得Pods將保持不變。

      有狀態(tài)工作負(fù)載(StatefulSet)回滾

      statefulset和deployment 一樣也支持回滾操作,statefulset也保存了歷史版本,和deployment一樣利用.spec.revisionHistoryLimit字段設(shè)置保存多少個(gè)歷史版本。

      提示:因?yàn)閟tatefulset 的使用對(duì)象是有狀態(tài)服務(wù),大部分有狀態(tài)副本集都會(huì)用到持久存儲(chǔ),statefulset下的每個(gè)pod正常情況下都會(huì)關(guān)聯(lián)一個(gè)pv對(duì)象,對(duì) statefulset對(duì)象回滾非常容易,但其使用的pv中保存的數(shù)據(jù)無(wú)法回滾,所以在生產(chǎn)環(huán)境中進(jìn)行回滾時(shí)需要謹(jǐn)慎操作。

      2.應(yīng)用探針健康檢查機(jī)制詳解

      容器健康檢查

      liveness probe (工作負(fù)載存活探針)︰指示容器是否正在運(yùn)行。如果存活態(tài)探測(cè)失敗,則 kubelet會(huì)殺死容器,并且容器將根據(jù)其重啟策略進(jìn)行重啟。如果容器不提供存活探針,則默認(rèn)狀態(tài)為Success。

      readiness probe (工作負(fù)載業(yè)務(wù)探針)︰用于檢查用戶業(yè)務(wù)是否就緒,如果未就緒,則不轉(zhuǎn)發(fā)流量到當(dāng)前實(shí)例。一些程序的啟動(dòng)時(shí)間可能很長(zhǎng),比如要加載磁盤(pán)數(shù)據(jù)或者要依賴(lài)外部的某個(gè)模塊啟動(dòng)完成才能提供服務(wù)。這時(shí)候程序進(jìn)程在,但是并不能對(duì)外提供服務(wù)。這種場(chǎng)景下該檢查方式就非常有用。如果容器的就緒檢查失敗,集群會(huì)屏蔽請(qǐng)求訪問(wèn)該容器;若檢查成功,則會(huì)開(kāi)放對(duì)該容器的訪問(wèn)。

      探針檢查機(jī)制:

      Kubernetes支持如下三種探測(cè)機(jī)制:

      HTTP GET:向容器發(fā)送HTTP GET請(qǐng)求,如果Probe收到2xx或3xx,說(shuō)明容器是健康的。

      TCP Socket:嘗試與容器指定端口建立TCP連接,如果連接成功建立,說(shuō)明容器是健康的。

      Exec: Probe執(zhí)行容器中的命令并檢查命令退出的狀態(tài)碼,如果狀態(tài)碼為0則說(shuō)明容器是健康的。

      延時(shí)時(shí)間 (initialDelaySeconds ) :延遲檢查時(shí)間,單位為秒,此設(shè)置與業(yè)務(wù)程序正常啟動(dòng)時(shí)間相關(guān)。例如,設(shè)置為30,表明容器啟動(dòng)后30秒才開(kāi)始健康檢查,該時(shí)間是預(yù)留給業(yè)務(wù)程序啟動(dòng)的時(shí)間。

      超時(shí)時(shí)間( periodSeconds ):例如,設(shè)置為10,表明執(zhí)行健康檢查的超時(shí)等待時(shí)間為10秒,如果超過(guò)這個(gè)時(shí)間,本次健康檢查就被視為失敗。若設(shè)置為0或不設(shè)置,默認(rèn)超時(shí)等待時(shí)間為1秒。

      3.應(yīng)用彈性伸縮原理詳解

      彈性伸縮概述

      彈性伸縮是根據(jù)業(yè)務(wù)需求和策略,經(jīng)濟(jì)地自動(dòng)調(diào)整彈性計(jì)算資源的管理服務(wù)。

      彈性伸縮能力分為如下兩個(gè)維度:

      工作負(fù)載彈性伸縮:即調(diào)度層彈性,主要是負(fù)責(zé)修改負(fù)載的調(diào)度容量變化。例如,HPA是典型的調(diào)度層彈性組件,通過(guò)HPA可以調(diào)整應(yīng)用的副本數(shù),調(diào)整的副本數(shù)會(huì)改變當(dāng)前負(fù)載占用的調(diào)度容量,從而實(shí)現(xiàn)調(diào)度層的伸縮。

      節(jié)點(diǎn)彈性伸縮:即資源層彈性,主要是集群的容量規(guī)劃不能滿足集群調(diào)度容量時(shí),會(huì)通過(guò)彈出ECS或CCI等資源的方式進(jìn)行調(diào)度容量的補(bǔ)充。CCE容器實(shí)例彈性到CCI服務(wù)的方法請(qǐng)參見(jiàn)CCE容器實(shí)例彈性伸縮到CCI服務(wù)。

      兩個(gè)維度的彈性組件與能力可以分開(kāi)使用,也可以結(jié)合在一起使用。

      AutoScaler節(jié)點(diǎn)伸縮原理解析

      Autoscaler是Kubernetes提供的集群節(jié)點(diǎn)彈性伸縮組件,根據(jù)Pod調(diào)度狀態(tài)及資源使用情況對(duì)集群的節(jié)點(diǎn)進(jìn)行自動(dòng)擴(kuò)容縮容。

      Autoscaler(簡(jiǎn)稱(chēng)CA)的主要流程包括兩部分:

      ScaleUp流程:CA會(huì)每隔15s檢查一次所有不可調(diào)度的Pod,根據(jù)用戶設(shè)置的策略,選擇出一個(gè)符合要求的節(jié)點(diǎn)組進(jìn)行擴(kuò)容。

      ScaleDown流程:CA每隔10s會(huì)掃描一次所有的Node,如果該Node上所有的Pod Requests少于用戶定義的縮容百分比時(shí),CA會(huì)模擬將該節(jié)點(diǎn)上的Pod是否能遷移到其他節(jié)點(diǎn),如果可以的話,當(dāng)滿足不被需要的時(shí)間窗以后,該節(jié)點(diǎn)就會(huì)被移除。

      HPA工作負(fù)載伸縮原理解析

      HPA(Horizontal Pod Autoscaler)是用來(lái)控制Pod水平伸縮的控制器,HPA周期性檢查Pod的度量數(shù)據(jù),計(jì)算滿足HPA資源所配置的目標(biāo)數(shù)值所需的副本數(shù)量,進(jìn)而調(diào)整目標(biāo)資源(如Deployment)的replicas字段。想要做到自動(dòng)彈性伸縮,先決條件就是能感知到各種運(yùn)行數(shù)據(jù),例如集群節(jié)點(diǎn)Pod、容器的CPU、內(nèi)存使用率等等。而這些數(shù)據(jù)的監(jiān)控能力Kubernetes也沒(méi)有自己實(shí)現(xiàn),而是通過(guò)其他項(xiàng)目來(lái)擴(kuò)展Kubernetes的能力,CCE提供如下兩個(gè)插件來(lái)實(shí)現(xiàn)該能力:

      Prometheus是一套開(kāi)源的系統(tǒng)監(jiān)控報(bào)警框架,能夠采集豐富的Metrics(度量數(shù)據(jù)),目前已經(jīng)基本是Kubernetes的標(biāo)準(zhǔn)監(jiān)控方案。Metrics Server是Kubernetes集群范圍資源使用數(shù)據(jù)的聚合器。

      Metrics Server從kubelet公開(kāi)的Summary API中采集度量數(shù)據(jù),能夠收集包括了Pod、Node、容器、Service等主要Kubernetes核心資源的度量數(shù)據(jù),且對(duì)外提供一套標(biāo)準(zhǔn)的API。

      使用HPA(Horizontal Pod Autoscaler)配合Metrics Server可以實(shí)現(xiàn)基于CPU和內(nèi)存的自動(dòng)彈性伸縮,再配合Prometheus還可以實(shí)現(xiàn)自定義監(jiān)控指標(biāo)的自動(dòng)彈性伸縮。

      使用HPA+CA實(shí)現(xiàn)工作負(fù)載和節(jié)點(diǎn)聯(lián)動(dòng)彈性伸縮

      彈性伸縮最主要的就是使用HPA (Horizontal Pod ? Autoscaling)和CA (Cluster AutoScaling)兩種彈性伸縮策略,HPA負(fù)責(zé)工作負(fù)載彈性伸縮,也就是應(yīng)用層面的彈性伸縮,CA負(fù)責(zé)節(jié)點(diǎn)彈性伸縮,也就是資源層面的彈性伸縮。

      通常情況下,兩者需要配合使用,因?yàn)镠PA需要集群有足夠的資源才能擴(kuò)容成功,當(dāng)集群資源不夠時(shí)需要CA擴(kuò)容節(jié)點(diǎn),使得集群有足夠資源;而當(dāng)HPA縮容后集群會(huì)有大量空余資源,這時(shí)需要CA縮容節(jié)點(diǎn)釋放資源,才不至于造成浪費(fèi)。

      創(chuàng)建HPA示例

      可以看到,TARGETS的期望值是70%。而實(shí)際是0%,這就意味著HPA會(huì)做出縮容動(dòng)作,期望副本數(shù)量=(0+0+0+0)/70=0,但是由于最小副本數(shù)為1,所以Pod數(shù)量會(huì)調(diào)整為1。等待一段時(shí)間。可以看到Pod數(shù)量變?yōu)?

      華為云云原生鉆石集訓(xùn)營(yíng) 第八課:Kubernetes運(yùn)維管理詳解(上)

      查看HPA詳情。可以在Events里面看到這樣一條記錄。這表示HPA在21秒前成功的執(zhí)行了縮容動(dòng)作。新的Pod數(shù)量為1,原因是所有度量數(shù)量都比目標(biāo)值低。

      本課總結(jié):

      liveness probe:工作負(fù)載存活探針,指示容器是否正在運(yùn)行。如果存活態(tài)探測(cè)失敗,則 kubelet會(huì)殺死容器,并且容器將根據(jù)其重啟策略進(jìn)行重啟。如果容器不提供存活探針,則默認(rèn)狀態(tài)為Success。

      readiness probe:工作負(fù)載業(yè)務(wù)探針,指示容器是否準(zhǔn)備好為請(qǐng)求提供服務(wù)。只有當(dāng)Pod中的容器都處于就緒狀態(tài)時(shí)kubelet才會(huì)認(rèn)定該P(yáng)od處于就緒狀態(tài)。該信號(hào)的作用是控制哪些Pod應(yīng)該作為service的后端。如果Pod處于非就緒狀態(tài),那么它們將會(huì)被從service的load balancer中移除。

      Cluster AutoScaler:簡(jiǎn)稱(chēng)CA,Autoscaler是Kubernetes提供的集群節(jié)點(diǎn)彈性伸縮組件,根據(jù)Pod調(diào)度狀態(tài)及資源使用情況對(duì)集群的節(jié)點(diǎn)進(jìn)行自動(dòng)擴(kuò)容縮容。

      Horizontal Pod Autoscaler:簡(jiǎn)稱(chēng)HPA,是用來(lái)控制Pod水平伸縮的控制器,HPA周期性檢查Pod的度量數(shù)據(jù),計(jì)算滿足HPA資源所配置的目標(biāo)數(shù)值所需的副本數(shù)量,進(jìn)而調(diào)整目標(biāo)資源(如Deployment)的replicas字段。

      參考鏈接:

      相關(guān)內(nèi)容的華為云官網(wǎng)鏈接:

      https://support.huaweicloud.com/usermanual-cce/cce_01_0279.html

      https://support.huaweicloud.com/usermanual-cce/cce_01_0006.html

      Kubernetes官方文檔: https://kubernetes.io/zh/docs/concepts/workloads/

      CCE云容器引擎官方首頁(yè): https://www.huaweicloud.com/product/cce.html

      Kubernetes 云原生 彈性伸縮 AS

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:像毛竹一樣成長(zhǎng)
      下一篇:RFID與NFC技術(shù)區(qū)別與聯(lián)系
      相關(guān)文章
      亚洲一卡2卡4卡5卡6卡在线99 | 亚洲精品在线不卡| 亚洲人JIZZ日本人| 豆国产96在线|亚洲| 亚洲成av人在线观看网站| 亚洲精品自偷自拍无码| 亚洲精品无码专区在线播放| 亚洲色偷偷综合亚洲av78 | 亚洲欧洲中文日韩av乱码| 国产亚洲情侣久久精品| 亚洲福利中文字幕在线网址| 亚洲av无码不卡私人影院| 亚洲国产成人久久综合野外| 国产区图片区小说区亚洲区| 亚洲AⅤ无码一区二区三区在线| 国产在亚洲线视频观看| 亚洲Av无码乱码在线znlu| 亚洲成a人片在线观看国产| 亚洲黄黄黄网站在线观看| 国产成人亚洲综合| 自拍偷自拍亚洲精品被多人伦好爽| 青青草原亚洲视频| 国产精品亚洲精品日韩已满| 亚洲成Av人片乱码色午夜| 亚洲男人天堂av| 亚洲无限乱码一二三四区| 亚洲人成在线播放| 亚洲区日韩精品中文字幕| 在线播放亚洲精品| 亚洲精品无码久久久久AV麻豆| 久久精品国产精品亚洲下载| 亚洲精品中文字幕乱码三区| 亚洲精品福利视频| 亚洲国产精品久久丫| 91丁香亚洲综合社区| 国产亚洲视频在线观看网址| 国产精品亚洲αv天堂无码| 亚洲成a人片在线观看无码 | 亚洲国产av玩弄放荡人妇| 亚洲福利在线播放| 亚洲高清国产拍精品26U|