如何滚动更新Service

发布时间:2021-11-19 09:30:43 作者:柒染
来源:亿速云 阅读:129

今天就跟大家聊聊有关如何滚动更新Service,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本。

滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务。同时,在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性。

下面我们将部署三副本的服务,镜像使用 httpd:2.2.31,然后将其更新到 httpd:2.2.32。

创建服务:

docker service create --name my_web --replicas=3 httpd:2.2.31

将 service 更新到 httpd:2.2.32:

docker service update --image httpd:2.2.32 my_web

--image 指定新的镜像。

Swarm 将按照如下步骤执行滚动更新:

  1. 停止第一个副本。

  2. 调度任务,选择 worker node。

  3. 在 worker 上用新的镜像启动副本。

  4. 如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。

docker service ps 查看更新结果。

三个副本都已经更新到 httpd:2.2.32。

默认配置下,Swarm 一次只更新一个副本,并且两个副本之间没有等待时间。我们可以通过 --update-parallelism 设置并行更新的副本数目,通过 --update-delay 指定滚动更新的间隔时间。

比如执行如下命令:

docker service update --replicas 6 --update-parallelism 2 --update-delay 1m30s my_web

service 增加到六个副本,每次更新两个副本,间隔时间一分半钟。

docker service inspect 查看 service 的当前配置。

docker service ps 确保6个副本处于正常状态。

执行如下命令,将镜像更新到 httpd:2.4.16。

docker service update --image httpd:2.4.16 my_web

等待一会,查看更新的状态。

有4个副本已经更新到 httpd:2.4.16,从启动时间看,确实是分了两批进行,之间间隔90秒,每次更新两个副本。

Swarm 还有个方便的功能是回滚,如果更新后效果不理想,可以通过 --rollback 快速恢复到更新之前的状态。

service 所有副本都已经恢复到 httpd:2.2.32。

请注意,--rollback 只能回滚到上一次执行 docker service update 之前的状态,并不能无限制地回滚。

看完上述内容,你们对如何滚动更新Service有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. k8s之滚动更新(Rolling Update)与回滚
  2. Kubernetes Pod应用的滚动更新(八)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

service

上一篇:Spark-sql如何创建外部分区表

下一篇:云计算中如何对容器实例日志设置定期清理和回卷

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》