Rolling Update - 天天5分钟玩转 Docker 容器技术(140)

滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成全部副本的更新。滚动更新的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性。html

下面咱们部署三副本应用,初始镜像为 httpd:2.2.31,而后将其更新到 httpd:2.2.32。app

httpd:2.2.31 的配置文件以下:code

经过 kubectl apply 部署。htm

部署过程以下:blog

  1. 建立 Deployment httpd部署

  2. 建立 ReplicaSet httpd-551879778get

  3. 建立三个 Podit

  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