Rolling Update - 每天5分鍾玩轉 Docker 容器技術(140)


滾動更新是一次只更新一小部分副本,成功后,再更新更多的副本,最終完成所有副本的更新。滾動更新的最大的好處是零停機,整個更新過程始終有副本在運行,從而保證了業務的連續性。

下面我們部署三副本應用,初始鏡像為 httpd:2.2.31,然后將其更新到 httpd:2.2.32。

httpd:2.2.31 的配置文件如下:

通過 kubectl apply 部署。

部署過程如下:

  1. 創建 Deployment httpd

  2. 創建 ReplicaSet httpd-551879778

  3. 創建三個 Pod

  4. 當前鏡像為 httpd:2.2.31

將配置文件中 httpd:2.2.31 替換為 httpd:2.2.32,再次執行 kubectl apply

我們發現了如下變化:

  1. Deployment httpd 的鏡像更新為 httpd:2.2.32

  2. 新創建了 ReplicaSet httpd-1276601241,鏡像為 httpd:2.2.32,並且管理了三個新的 Pod。

  3. 之前的 ReplicaSet httpd-551879778 里面已經沒有任何 Pod。

結論是:ReplicaSet httpd-551879778 的三個 httpd:2.2.31 Pod 已經被 ReplicaSet httpd-1276601241 的三個 httpd:2.2.32 Pod 替換了。

具體過程可以通過 kubectl describe deployment httpd 查看。

每次只更新替換一個 Pod

  1. ReplicaSet httpd-1276601241 增加一個 Pod,總數為 1。

  2. ReplicaSet httpd-551879778 減少一個 Pod,總數為 2。

  3. ReplicaSet httpd-1276601241 增加一個 Pod,總數為 2。

  4. ReplicaSet httpd-551879778 減少一個 Pod,總數為 1。

  5. ReplicaSet httpd-1276601241 增加一個 Pod,總數為 3。

  6. ReplicaSet httpd-551879778 減少一個 Pod,總數為 0。

每次替換的 Pod 數量是可以定制的。Kubernetes 提供了兩個參數 maxSurge 和 maxUnavailable 來精細控制 Pod 的替換數量,我們將在后面結合 Health Check 特性一起討論。

下一節我們討論如何回滾。

書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

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



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