如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本。
滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务。同时,在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性。
下面我们将部署三副本的服务,镜像使用 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 将按照如下步骤执行滚动更新:
-
停止第一个副本。
-
调度任务,选择 worker node。
-
在 worker 上用新的镜像启动副本。
-
如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。
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
之前的状态,并不能无限制地回滚。
滚动更新就讨论到这里,下一节我们学习 Docker Swarm 如何管理数据。
书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
相关文章
- 天云软件技术沙龙,带你近距离了解Docker等容器技术!
- Docker容器技术的PaaS云平台架构设计***
- 五步轻松实施Docker容器技术
- Kubernetes 集群日志管理 - 每天5分钟玩转 Docker 容器技术(180)
- Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)
- 实践 Network Policy - 每天5分钟玩转 Docker 容器技术(172)
- 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
- Liveness 探测 - 每天5分钟玩转 Docker 容器技术(143)
- Job 失败了怎么办?- 每天5分钟玩转 Docker 容器技术(133)
- 如何 Scale Up/Down Deployment?- 每天5分钟玩转 Docker 容器技术(126)
- k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
- 学习 Kubernetes 的 Why 和 How - 每天5分钟玩转 Docker 容器技术(114)
- 神奇的 routing mesh - 每天5分钟玩转 Docker 容器技术(100)
- Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
- Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)
- ELK 完整部署和使用 - 每天5分钟玩转 Docker 容器技术(90)
- 容器在 Weave 中如何通信和隔离?- 每天5分钟玩转 Docker 容器技术(65)
- 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)
- 实现容器的底层技术 - 每天5分钟玩转 Docker 容器技术(30)
- 容器常用操作 - 每天5分钟玩转 Docker 容器技术(25)
- 详解单体架构 微服务 微服务架构 分布式结构 集群 负载均衡 服务监听 服务降级 服务通信 session共享 docker技术
- 为什么Docker技术是企业成功的秘诀
- Docker:2016年,容器技术将带来什么?
- docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip