kubernetes Pod的升級與回滾


一:Deployment的升級

1.通過kubectl set image命令為Deployment設置新的鏡像名稱
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會自動升級鏡像。
3.通過kubectl rollout status 可以查看deployment的更新過程
在Deployment的定義中,可以通過spec.strategy指定Pod更新的策略:

1.Recreate(重建): 設置spec.strategy.type=Recreate,表示Deployment在更新Pod時,會先殺掉所有正在運行的Pod,然后創建新的Pod.
2.RollingUpdate(滾動更新):以滾動更新的方式來逐個更新Pod,可以通過設置spec.strategy.rollingUpdate下的兩個參數(maxUnavailable和maxSurge)來控制滾動更新的過程。
通常來說,不鼓勵更新Deployment的標簽選擇器,因為這樣會導致Deployment選擇的Pod列表發生變化,也可能與其它控制器產生沖突。

:Deployment的回滾

所有Deployment的發布歷史記錄都保留在系統中,如果要進行回滾:

發布應用時記錄版本次 kubectl apply -f xxxx.yaml --record

1. 用kubectl rollout history命令檢查這個Deployment部署的歷史記錄
2.用kubectl rollout undo deployment/nginx-deployment 撤銷本次發布回滾到上一個部署版本
3.用kubectl rollout undo deployment/nginx-deployment --to-revision=2 回滾到指定版本

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

對應一次復雜的Deployment配置修改,為了避免頻繁觸發Deployment的更新操作,可以暫停Deployment的更新操作,然后進行配置修改,再回復Deployment.一次性觸發完整的更新操作。
使用命令:kubectl rollout pause deployment/nginx-deployment

四:使用kubectl rolling-update命令完成RC的滾動升級

對應RC的滾動升級,Kubernetes還提供了一個kubectl rolling-update 命令進行實現。該命令創建一個新的RC,然后自動控制舊的RC中的副本數量逐漸減少到0,同時新的RC中的Pod副本的數量從0逐步增加到目標值,來完成Pod的升級。 需要注意的是新舊RC要再同一個命名空間內。

五:其它管理對象的更新策略
1.DaemonSet的更新策略
a.OnDelete:  默認配置。只有舊的Pod被用戶手動刪除后,才觸發新建操作。
b.RollingUpdate: 就版本的Pod將被自動殺掉,然后自動創建新版本的DaemonSet Pod.

2.StatefulSet的更新策略
StatefulSet的更新策略正逐漸向Deployment和DaemonSet的更新策略看齊。

原文:http://blog.itpub.net/28624388/viewspace-2154452/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM