参考https://www.cnblogs.com/CloudMan6/p/7988455.html
在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本。
滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务。
同时在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性。
下面我们进行一个实验,将一个 3 副本的httpd Service,我们将 httpd镜像的版本进行升级
httpd:2.4.35  升级到 httpd:2.4.37
root@host03:~# docker service create --name httpd_2435 --replicas 3 httpd:2.4.35    #    创建Service 镜像 httpd:2.4.35,副本数3
8ppmoni91g7u22z4f4if61ro7
overall progress: 3 out of 3 tasks
1/3: running   
2/3: running   
3/3: running   
verify: Service converged 
root@host03:~# docker service update --image httpd:2.4.37 httpd_2435    #    更新Service 镜像到 httpd:2.4.37
httpd_2435
overall progress: 3 out of 3 tasks
1/3: running   
2/3: running   
3/3: running   
verify: Service converged
root@host03:~# docker service ps httpd_2435    #    更新前Service各副本状态
ID                  NAME                IMAGE               NODE                DESIRED ST          PORTS
hkb5vb4ocqu6        httpd_2435.1        httpd:2.4.35        host02              Running             
3v4vikx98pgm        httpd_2435.2        httpd:2.4.35        host01              Running             
d58skm47doqf        httpd_2435.3        httpd:2.4.35        host02              Running             
root@host03:~# docker service ps httpd_2435    #    更新副本2过程中
ID                  NAME                IMAGE               NODE                DESIRED ST          PORTS
hkb5vb4ocqu6        httpd_2435.1        httpd:2.4.35        host02              Running                  
ys34lst9obij        httpd_2435.2        httpd:2.4.37        host01              Ready                    
3v4vikx98pgm         \_ httpd_2435.2    httpd:2.4.35        host01              Shutdown                 
d58skm47doqf        httpd_2435.3        httpd:2.4.35        host02              Running                  
root@host03:~# docker service ps httpd_2435    #    更新副本2完毕
ID                  NAME                IMAGE               NODE                DESIRED ST          PORTS
hkb5vb4ocqu6        httpd_2435.1        httpd:2.4.35        host02              Running             
ys34lst9obij        httpd_2435.2        httpd:2.4.37        host01              Running             
3v4vikx98pgm         \_ httpd_2435.2    httpd:2.4.35        host01              Shutdown            
d58skm47doqf        httpd_2435.3        httpd:2.4.35        host02              Running             
root@host03:~# docker service ps httpd_2435    #    更新副本3完毕
ID                  NAME                IMAGE               NODE                DESIRED ST               PORTS
hkb5vb4ocqu6        httpd_2435.1        httpd:2.4.35        host02              Running                  
ys34lst9obij        httpd_2435.2        httpd:2.4.37        host01              Running                  
3v4vikx98pgm         \_ httpd_2435.2    httpd:2.4.35        host01              Shutdown                 
pujxt7yrum1d        httpd_2435.3        httpd:2.4.37        host01              Running                  
d58skm47doqf         \_ httpd_2435.3    httpd:2.4.35        host02              Shutdown                 
root@host03:~# docker service ps httpd_2435    #    更新副本1完毕
ID                  NAME                IMAGE               NODE                DESIRED ST               PORTS
hguoom4ihf8t        httpd_2435.1        httpd:2.4.37        host02              Running                  
hkb5vb4ocqu6         \_ httpd_2435.1    httpd:2.4.35        host02              Shutdown                 
ys34lst9obij        httpd_2435.2        httpd:2.4.37        host01              Running                  
3v4vikx98pgm         \_ httpd_2435.2    httpd:2.4.35        host01              Shutdown                 
pujxt7yrum1d        httpd_2435.3        httpd:2.4.37        host01              Running                  
d58skm47doqf         \_ httpd_2435.3    httpd:2.4.35        host02              Shutdown                 
 
root@host03:~# docker service update --rollback httpd_2435    #    回滚到之前的版本
httpd_2435
rollback: manually requested rollback
overall progress: rolling back update: 3 out of 3 tasks
1/3: running   
2/3: running   
3/3: running   
verify: Service converged
root@host03:~# docker service ps httpd_2435    #    回滚到之前的版本后,新开了一个 httpd:2.4.25,而不是使用之前的 httpd:2.4.35
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
py7dm0500o2z        httpd_2435.1        httpd:2.4.35        host02              Running             Running 19 seconds ago                           
hguoom4ihf8t         \_ httpd_2435.1    httpd:2.4.37        host02              Shutdown            Shutdown 20 seconds ago                          
hkb5vb4ocqu6         \_ httpd_2435.1    httpd:2.4.35        host02              Shutdown            Shutdown about an hour ago                       
rdvhf3z4zh7r        httpd_2435.2        httpd:2.4.35        host01              Running             Running 17 seconds ago                           
ys34lst9obij         \_ httpd_2435.2    httpd:2.4.37        host01              Shutdown            Shutdown 18 seconds ago                          
3v4vikx98pgm         \_ httpd_2435.2    httpd:2.4.35        host01              Shutdown            Shutdown about an hour ago                       
xed1n7sy7td8        httpd_2435.3        httpd:2.4.35        host01              Running             Running 22 seconds ago                           
pujxt7yrum1d         \_ httpd_2435.3    httpd:2.4.37        host01              Shutdown            Shutdown 23 seconds ago                          
d58skm47doqf         \_ httpd_2435.3    httpd:2.4.35        host02              Shutdown            Shutdown about an hour ago     

默认配置下,Swarm一次只能更新一个副本,并且两个副本之间没有等待时间,我们可以通过 -- update-parallelism 设置并行更新的副本数目,通过--update-delay 指定滚动更新的时间间隔。
下面的例子中,我们有20个副本,更新并发数 4 ,更新延时 10s
root@host03:~# docker service update --image httpd:2.2 --update-parallelism 4 --update-delay 10s httpd_2435
ps:弹性伸缩时,即增减副本数并不受此限制,会以最快的速度完成伸缩

转载于:https://www.cnblogs.com/www1707/p/10872761.html

102、如何滚动更新 Service (Swarm09)相关推荐

  1. 如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)

    在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本. 滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务.同时,在更新的过程中,总是 ...

  2. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新

    在项目迭代的过程中,不可避免需要上线进行部署. 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新.本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新 ...

  3. K8s Kubectl基础命令的使用、滚动更新、以及回滚操作

    Kubectl基础命令的使用 kubernetes基本概念 kubectl管理命令 kubectl帮助 Kubectl常用命令的使用 explain edit scale autoscale clus ...

  4. 万字长文带你全面认识 Kubernetes 中如何实现蓝绿部署、金丝雀发布和滚动更新...

    Kubernetes 中的部署策略 在本文中,我们将学习使用 Kubernetes 容器编排系统部署容器时的部署策略.在本文的最后,我们将学习如何在 Kubernetes 集群中使用不同的方式进行部署 ...

  5. 详细聊聊k8s deployment的滚动更新(二)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍:   livenessProbe:存活性探测.判断pod是否已经停止   readinessProbe:就绪 ...

  6. helm滚动更新mysql_kubernetes使用helm滚动更新

    我是Helm的新手 . 我在我的Windows系统上安装了Minikube&Helm . 我可以使用Helm创建pod,并在仪表板中查看部署,pods和replicaset . 我想使用Hel ...

  7. K8S滚动更新示例演示

    简介 当kubernetes集群中的某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动并提供服务.如果业务集群规模较大时,这个工作就变成了一个挑战,而且先 ...

  8. 不停机与停机更新_Istio的零停机滚动更新

    不停机与停机更新 本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新. 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败. 本文将展示如何使用Istio群集实现 ...

  9. Istio的零停机滚动更新

    本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新. 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败. 本文将展示如何使用Istio群集实现相同的目标. 服务 ...

最新文章

  1. ZooKeeper Watch Java API浅析getChildren
  2. python爬虫正则表达式实例-使用正则表达式进行页面提取
  3. C/Cpp / 设计模式 / 观察者模式
  4. Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)
  5. 友讯(d-link)dwa-525 150m无线台式计算机网卡,D-Link新款台式机无线网卡即将上市
  6. 如何查阅资料?(找数据集,文献...)
  7. Python URL编码
  8. Anaconda中安装pygame
  9. 单词吸血鬼源代码 二叉树操作
  10. 黑马学习之全平台听歌神器
  11. Python学习第二课-----绘制股票K线图(不使用mpl_finance包)
  12. Python 打怪兽游戏
  13. IceWarp邮件监控功能
  14. Python爬虫任务1
  15. box-shadow单边
  16. InetAddress类常用方法
  17. LaSO: Label-Set Operations networks for multi-label few-shot learning 论文笔记
  18. 基于PHP的仿小米商城系统(完整前后台)
  19. 辰光融信全面推出基于可信计算3.0技术的安全增强型打印机
  20. 房地产行业如何轻松实现数据可视化

热门文章

  1. 王力宏《十八般武艺》全部歌曲试听
  2. Windows Server 2008虚拟化功能解析
  3. ContactsContract.Contacts与ContactsContract.CommonDataKinds.Phone的区别
  4. iPhone4 FaceTime 联通官方教程
  5. Java PECS
  6. Android sdk Drow9patch使用
  7. [转]微信小程序开发需要注意的29个坑
  8. bilateral filter双边滤波器的通俗理解
  9. maven如何将本地jar安装到本地仓库
  10. Python3 嵌套函数