<code>kubectl apply</code> 每次更新應用時 Kubernetes 都會記錄下目前的配置,儲存為一個 revision(版次),這樣就可以復原到某個特定 revision。
預設配置下,Kubernetes 隻會保留最近的幾個 revision,可以在 Deployment 配置檔案中通過 <code>revisionHistoryLimit</code> 屬性增加 revision 數量。
下面實踐復原功能。應用有如下三個配置檔案 <code>httpd.v1.yml</code>,<code>httpd.v2.yml</code> 和 <code>httpd.v3.yml</code>,分别對應不同的 httpd 鏡像 <code>2.4.16</code>,<code>2.4.17</code> 和 <code>2.4.18</code>:

通過 <code>kubectl apply</code> 部署并更新應用:
<code>--record</code> 的作用是将目前指令記錄到 revision 記錄中,這樣我們就可以知道每個 revison 對應的是哪個配置檔案。通過 <code>kubectl rollout history deployment httpd</code> 檢視 revison 曆史記錄。
<code>CHANGE-CAUSE</code> 就是 <code>--record</code> 的結果。如果要復原到某個版本,比如 revision 1,可以執行指令 <code>kubectl rollout undo deployment httpd --to-revision=1</code>:
此時,revison 曆史記錄也會發生相應變化。
revison 1 變成了 revison 4。不過我們可以通過 <code>CHANGE-CAUSE</code> 知道每個 revison 的具體含義。是以一定要在執行 <code>kubectl apply</code> 時加上 <code>--record</code>參數。
滾動更新我們就讨論到這裡,下一節開始學習 k8s 的 Health Check 功能。
書籍:
1.《每天5分鐘玩轉Docker容器技術》
<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>
2.《每天5分鐘玩轉OpenStack》
<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>