kubectl apply
每次更新應用時 Kubernetes 都會記錄下當前的配置,保存為一個 revision(版次),這樣就可以回滾到某個特定 revision。
默認配置下,Kubernetes 只會保留最近的幾個 revision,可以在 Deployment 配置文件中通過 revisionHistoryLimit
屬性增加 revision 數量。
下面實踐回滾功能。應用有如下三個配置文件 httpd.v1.yml
,httpd.v2.yml
和 httpd.v3.yml
,分別對應不同的 httpd 鏡像 2.4.16
,2.4.17
和 2.4.18
:
通過 kubectl apply 更新應用
--record
的作用是將當前命令記錄到 revision 記錄中,這樣我們就可以知道每個 revison 對應的是哪個配置文件。通過 kubectl rollout history deployment httpd
查看 revison 歷史記錄。
CHANGE-CAUSE
就是 --record
的結果。
如果要回滾到某個版本,比如 revision 1,可以執行命令 :
kubectl rollout undo deployment httpd --to-revision=1
通過查看歷史 revision 由3版本變成4版本 ,其實這個4版本對應的就是之前的1版本
通過查看當前應用版本發現 符合上面描述的 1版本對應的 httpd:2.4.16
想要實現回滾功能,必須要加 --record 記錄應用的版本。