滾動更新是一次只更新一小部分副本,成功後,再更新更多的副本,最終完成全部副本的更新。滾動更新的最大的好處是零停機,整個更新過程始終有副本在運行,從而保證了業務的連續性。html
下面咱們部署三副本應用,初始鏡像爲 httpd:2.2.31,而後將其更新到 httpd:2.2.32。app
httpd:2.2.31 的配置文件以下:code
經過 kubectl apply
部署。htm
部署過程以下:blog
建立 Deployment httpd
部署
建立 ReplicaSet httpd-551879778
get
建立三個 Podit
當前鏡像爲 httpd:2.2.31
容器
將配置文件中 httpd:2.2.31
替換爲 httpd:2.2.32
,再次執行 kubectl apply
。配置
咱們發現了以下變化:
Deployment httpd
的鏡像更新爲 httpd:2.2.32
新建立了 ReplicaSet httpd-1276601241
,鏡像爲 httpd:2.2.32
,而且管理了三個新的 Pod。
以前的 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:
ReplicaSet httpd-1276601241
增長一個 Pod,總數爲 1。
ReplicaSet httpd-551879778
減小一個 Pod,總數爲 2。
ReplicaSet httpd-1276601241
增長一個 Pod,總數爲 2。
ReplicaSet httpd-551879778
減小一個 Pod,總數爲 1。
ReplicaSet httpd-1276601241
增長一個 Pod,總數爲 3。
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