在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本。
 
滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务。
同时在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性。
 
下面我们进行一个实验,将一个 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:弹性伸缩时,即增减副本数并不受此限制,会以最快的速度完成伸缩
 
 
 
 
 
 
 

102、如何滚动更新 Service (Swarm09)的更多相关文章

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

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

  2. Kubernetes集群中Service的滚动更新

    Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ...

  3. 入门 - k8s滚动更新部署中的镜像版本 (七)

    目标 使用 kubectl 执行 Rolling Update(滚动更新) 更新应用程序 用户期望应用程序始终可用,为此开发者/运维者在更新应用程序时要分多次完成.在 Kubernetes 中,这是通 ...

  4. docker swarm集群搭建以及使用滚动更新

    基础环境,三台虚拟机 172.17.3.70 172.17.3.71 172.17.3.72 系统配置:centos 7,关闭selinux 需要优化的基础配置: [root@sw1 ~]# vim ...

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

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

  6. Kubernetes Deloyment实现滚动更新

    目录 滚动更新简介 使用kubectl rolling-update更新RC Deployment的rolling-update 滚动更新简介 当kubernetes集群中的某个服务需要升级时,传统的 ...

  7. docker swarm实现java项目的发布/滚动更新/回滚/镜像管理

    使用docker swarm滚动更新java项目,部署集群,这一切的前提是使用Jenkins+maven进行项目打包,分发等功能 具体可以参考我的另外三篇文章 https://www.cnblogs. ...

  8. kubernetes滚动更新

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

  9. deployment控制pod进行滚动更新以及回滚

    更新pod镜像两种方式: 方式一:kubectl set image deployment/${deployment name} ${container name}=${image} 例: kubec ...

随机推荐

  1. Ubuntu14.04升级cmake版本的方法

    在Ubuntu14.04用以下命令默认安装的cmake版本为2.8.x,有时我们需要更高版本的cmake,所以需要升级. $ sudo apt-get install cmake 可通过以下命令查询c ...

  2. Maven私服搭建及使用-Windows版

    了解有限,目前只针对基础功能介绍,持续更新 一.下载对应的版本(本例版本:nexus-3.7.1-02) https://www.sonatype.com/download-oss-sonatype ...

  3. 让SpringBoot工程支持热部署

    下载地址:https://files.cnblogs.com/files/xiandedanteng/SpringBootWeb-1_20190928.rar 修改Java文件后,每次要重启才好用,修 ...

  4. centos7编译安装Python 3.6.8 后用pip3出现SSL未配置问题(import ssl失败)解决方法

    下载源码编译安装openssl https://www.openssl.org/source/openssl-1.0.2j.tar.gz ./config --prefix=/usr/local/op ...

  5. electron关于页面跳转 的问题

    刚开始看到页面跳转,大家一般会想到用 window.location.href = './index.html'; 这样的代码.结果是可以跳转,但 DOM事件 基本都会失效.到最后还是使用的 elec ...

  6. 动态执行表不可访问,或在v$session

    PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案 PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案 现象: 第一次用PL ...

  7. [译]AngularJS 1.3.0 开发者指南(一) -- 介绍 (转)

    http://www.cnblogs.com/lzj0616/p/6440563.html [译]AngularJS 1.3.0 开发者指南(一) -- 介绍 Angular是什么 ? Angular ...

  8. postman插件的安装以及简单介绍

    1:postman是干什么的? Postman官网上这么介绍的:“Modern software is built on APIs,Postman helps you develop APIs fas ...

  9. socket之UDP协议,并发编程介绍,操作系统发展史

    socket之UDP协议 1.UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection 参考 ...

  10. ubuntu 编译安装 svn

    1,简单的安装svn (1)  sudo apt-get install subversion 但是此种方式,可能不能安装到当前最新的svn.如当前最新的版本是svn 1.8.9 ,但是 通过此种安装 ...