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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章