溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kubernetes實(shí)踐之四十:Pod的升級(jí)與回滾

發(fā)布時(shí)間:2020-08-11 03:40:43 來源:ITPUB博客 閱讀:145 作者:百聯(lián)達(dá) 欄目:云計(jì)算
一:Deployment的升級(jí)
舉例:

點(diǎn)擊(此處)折疊或打開

  1. apiVersion: apps/v1beta1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-deployment
  5. spec:
  6.   replicas: 3
  7.   template:
  8.     metadata:
  9.       labels:
  10.         app: nginx
  11.     spec:
  12.       containers:
  13.       - name: nginx
  14.         images: nginx:1.7.9
  15.         ports:
  16.         - containerPort: 80
1.通過kubectl set image命令為Deployment設(shè)置新的鏡像名稱
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

2.使用kubectl edit命令修改Deployment的配置 將spec.template.spec.containers[0].images 從nginx:1.7.9 更改為1.9.1; 保存退出后,kubernetes會(huì)自動(dòng)升級(jí)鏡像。

3.通過kubectl rollout status 可以查看deployment的更新過程

在Deployment的定義中,可以通過spec.strategy指定Pod更新的策略:

1.Recreate(重建): 設(shè)置spec.strategy.type=Recreate,表示Deployment在更新Pod時(shí),會(huì)先殺掉所有正在運(yùn)行的Pod,然后創(chuàng)建新的Pod.

2.RollingUpdate(滾動(dòng)更新):以滾動(dòng)更新的方式來逐個(gè)更新Pod,可以通過設(shè)置spec.strategy.rollingUpdate下的兩個(gè)參數(shù)(maxUnavailable和maxSurge)來控制滾動(dòng)更新的過程。

通常來說,不鼓勵(lì)更新Deployment的標(biāo)簽選擇器,因?yàn)檫@樣會(huì)導(dǎo)致Deployment選擇的Pod列表發(fā)生變化,也可能與其它控制器產(chǎn)生沖突。

:Deployment的回滾

所有Deployment的發(fā)布?xì)v史記錄都保留在系統(tǒng)中,如果要進(jìn)行回滾:

1. 用kubectl rollout history命令檢查這個(gè)Deployment部署的歷史記錄

2.用kubectl rollout undo deployment/nginx-deployment 撤銷本次發(fā)布回滾到上一個(gè)部署版本

3.用kubectl rollout undo deployment/nginx-deployment --to-revision=2 回滾到指定版本

三:暫停和恢復(fù)Deployment的部署操作,以完成復(fù)雜的修改

對(duì)應(yīng)一次復(fù)雜的Deployment配置修改,為了避免頻繁觸發(fā)Deployment的更新操作,可以暫停Deployment的更新操作,然后進(jìn)行配置修改,再回復(fù)Deployment.一次性觸發(fā)完整的更新操作。

使用命令:kubectl rollout pause deployment/nginx-deployment

四:使用kubectl rolling-update命令完成RC的滾動(dòng)升級(jí)

對(duì)應(yīng)RC的滾動(dòng)升級(jí),Kubernetes還提供了一個(gè)kubectl rolling-update 命令進(jìn)行實(shí)現(xiàn)。該命令創(chuàng)建一個(gè)新的RC,然后自動(dòng)控制舊的RC中的副本數(shù)量逐漸減少到0,同時(shí)新的RC中的Pod副本的數(shù)量從0逐步增加到目標(biāo)值,來完成Pod的升級(jí)。 需要注意的是新舊RC要再同一個(gè)命名空間內(nèi)。

五:其它管理對(duì)象的更新策略
1.DaemonSet的更新策略
a.OnDelete:  默認(rèn)配置。只有舊的Pod被用戶手動(dòng)刪除后,才觸發(fā)新建操作。
b.RollingUpdate: 就版本的Pod將被自動(dòng)殺掉,然后自動(dòng)創(chuàng)建新版本的DaemonSet Pod.

2.StatefulSet的更新策略
StatefulSet的更新策略正逐漸向Deployment和DaemonSet的更新策略看齊。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI