1. 程式人生 > >k8s的Rolling Update(滾動更新)

k8s的Rolling Update(滾動更新)

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

下面我們部署三副本應用:

初始映象為 httpd:2.2.31,然後將其更新到 httpd:2.2.32

httpd:2.2.31 的配置檔案如下:

執行部署

部署過程如下:

  1. 建立 Deployment httpd

  2. 建立 ReplicaSet   httpd-5c44c97cb5  建立三個 Pod

  3. 當前映象為 httpd:2.2.31

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

當前有4個pod,3個可用 1個pod已經更新。一段時間後全部更新完畢,前後有一樣是不變的 就是可用pod的數量一直維持為3個。

我們發現瞭如下變化:

  1. Deployment httpd 的映象更新為 httpd:2.2.32

  2. 新建立了 ReplicaSet  httpd-596db6fdc4,映象為 httpd:2.2.32,並且管理了三個新的 Pod。

  3. 之前的 ReplicaSet  httpd-5c44c97cb5 裡面已經沒有任何 Pod。

結論是:ReplicaSet  httpd-5c44c97cb5  的三個 httpd:2.2.31 Pod 已經被ReplicaSet  httpd-596db6fdc4 的三個 httpd:2.2.32 Pod 替換了。

具體過程可以通過 kubectl describe deployment httpd 檢視。

 

每次只更新替換一個 Pod:

每次只更新替換一個 Pod:

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

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

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

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

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

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

 每次替換的 Pod 數量是可以定製的。Kubernetes 提供了兩個引數 maxSurge 和 maxUnavailable 來精細控制 Pod 的替換數量。