如何滚动更新 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
本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2047745
如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)相关推荐
- 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)
2019独角兽企业重金招聘Python工程师标准>>> 上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker s ...
- DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ...
- 每天5分钟玩转kubernetes_DNS 访问 Service 每天5分钟玩转 Docker 容器技术(138)
第138篇 DNS 访问 Service 在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部 ...
- 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...
- Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)
微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...
- 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)
除了 Cluster 内部可以访问 Service,很多情况我们也希望应用的 Service 能够暴露给 Cluster 外部.Kubernetes 提供了多种类型的 Service,默认是 Clus ...
- 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)
前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...
- Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
Service Cluster IP 是一个虚拟 IP,是由 Kubernetes 节点上的 iptables 规则管理的. 可以通过 iptables-save 命令打印出当前节点的 iptable ...
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
本节开始学习 Service. 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会 ...
最新文章
- linux内存布局及页面映射
- 比特币现金众筹应用Lighthouse正式上线
- hdu4810 Cn中取i异或和
- WRF,WPS,WRF-Chem安装及编译步骤及bug总结(2)
- python pywin32 微信_Pywin32错误地安装进Anaconda的Python里了
- kubernetes1.8.4 安装指南 -- 7. kubernetes node安装
- 数据可视化(BI报表的开发)第三天
- js 动态绑定事件 on click 完美解决绑定不成功
- Codeforces 835 F Roads in the Kingdom(树形dp)
- JS控制锚点打开新窗口
- mysql 分区 导出_mysql普通表变成分区表导入导出
- 7000个源码批量下载---复制来的
- 在线浏览 Stata 15 PDF 全套电子手册
- html 表格单元格点击事件,bootstrap table onClickCell点击单元格事件
- 阿里云安全恶意程序检测冠军经验分享(万字长文)
- python闰月计算_Python日期计算,编程练习题实例四
- MySQL 报错InnoDB: Cannot allocate memory for the buffer poo处理方法
- 搜狐狐友通过增加知名度增加用户量
- 学计算机大学报什么专业好就业前景,学哪些专业就业前景好?附未来最吃香的十大专业...
- 审核工作流程图、在线流程图、审批流程设计、在线绘图
热门文章
- 西北农林科技大学计算机组成原理脱机实验,西北农林科技大学_计算机组成原理XP实验系统要素.ppt...
- linux查看/etc/fastab,/etc/fastab文件丢失致系统宕机的解决方案
- gc问题mysql连接池_数据库连接池引起的FullGC问题,看我如何一步步排查、分析、解决...
- python mock支付_python mock知识03
- eclipse里source的快捷方法_Eclipse快捷键大全
- python语法与java语法的区别_Python语言与java语法的异同之处
- matlab 生成连续信号,Matlab的连续信号生成及时频域分析
- java 直播_一对一直播源码开发过程中区分Java和PHP的重要性
- require('module') 是什么?
- git tag 的基本用法