天天看點

kubernetes1.25應用更新、復原

作者:全棧行動派

1、概述

使用者希望應用程式始終可用,而開發人員則需要每天多次部署它們的新版本。在 Kubernetes 中,這些是通過滾動更新(Rolling Updates)完成的。 滾動更新 允許通過使用新的執行個體逐漸更新 Pod 執行個體,零停機進行 Deployment 更新。新的 Pod 将在具有可用資源的節點上進行排程。

2、前提

在上一篇文章中我們,執行個體操作了在kubernetes1.25中部署nginx1.14并釋出

本篇文章,我們接上篇,部署nginx1.14并且兩個副本,效果:

kubernetes1.25應用更新、復原

3、應用更新

我們的生産項目,每次發版都希望不停機切不影響正常使用,咱們看看kubernetes怎麼實作的。

本次執行個體為nginx1.14 更新為nginx1.23.0

指令:

# 執行更新
kubectl set image deploy mynginx nginx=nginx:1.23.0

# 檢視更新狀态
kubectl rollout status deploy mynginx           
kubernetes1.25應用更新、復原

注意: 咱們看上面實際操作過程更新前是2個pod,這個是正常的因為兩個副本嘛,更新中變成3個pod了,這是為啥呢?kubernetes更新應用為了不影響目前正常使用,會在更新中建立一個pod,等到更新的pod完全運作起來後,才會删除舊pod,這樣做的好處就是一旦更新失敗,也不影響正常使用,更新中,使用者無感覺。

4、應用復原

我們在實際生産項目更新後,發現有bug,想復原到上一個版本 這個是比較常見的場景,我們看看kubernetes怎麼操作。

涉及指令:

# 檢視 更新曆史記錄
kubectl rollout history deploy mynginx

# 撤銷上一次更新
kubectl  rollout undo deploy  mynginx

# 按照版本復原到某一個版本  版本号可以通過 kubectl rollout history deploy mynginx檢視
kubectl rollout undo deploy mynginx --to-revision=版本号

# 檢視復原狀态
kubectl rollout undo status deploy mynginx
           

執行復原上一個版本執行個體:

kubernetes1.25應用更新、復原

執行復原某一個版本執行個體:

kubernetes1.25應用更新、復原

繼續閱讀