天天看點

復原 - 每天5分鐘玩轉 Docker 容器技術(141)

<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>:

復原 - 每天5分鐘玩轉 Docker 容器技術(141)
復原 - 每天5分鐘玩轉 Docker 容器技術(141)
復原 - 每天5分鐘玩轉 Docker 容器技術(141)

通過 <code>kubectl apply</code> 部署并更新應用:

復原 - 每天5分鐘玩轉 Docker 容器技術(141)

<code>--record</code> 的作用是将目前指令記錄到 revision 記錄中,這樣我們就可以知道每個 revison 對應的是哪個配置檔案。通過 <code>kubectl rollout history deployment httpd</code> 檢視 revison 曆史記錄。

復原 - 每天5分鐘玩轉 Docker 容器技術(141)

<code>CHANGE-CAUSE</code> 就是 <code>--record</code> 的結果。如果要復原到某個版本,比如 revision 1,可以執行指令 <code>kubectl rollout undo deployment httpd --to-revision=1</code>:

復原 - 每天5分鐘玩轉 Docker 容器技術(141)

此時,revison 曆史記錄也會發生相應變化。

復原 - 每天5分鐘玩轉 Docker 容器技術(141)

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>