在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本。
 
滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务。
同时在更新的过程中,总是有副本在运行的,因此也保证了业务的连续性。
 
下面我们进行一个实验,将一个 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. java基础点<一>

    1. 九种基本数据类型的大小,以及他们的封装类.byte,short,int,long,boolue,float,double,char,特殊voidByte,Short,Integer,Long,B ...

  2. Struts 简单UI标签

    <!-- 服务器标签 : 最终别解析为html标签--> <s:form action="/user_login" method="post" ...

  3. [Python]python-jenkins获取正在构建中的job

    需求: 我现在需要完成1个接口,这个接口会启动jenkins构建jobA, jobA构建结束, 返回job的构建结果 思路: 首先使用get_job_info获取最后1次构建的构建序号,然后再通过ge ...

  4. 动态初始化swiper时,轮播图划不动得各种bug解决方法

    var mybanner = new Swiper('.i-gd-banner', { speed: 500, loop: true, observer:true,//修改swiper自己或子元素时, ...

  5. 从Windows系统到Linux系统转变的5大要点

    当我在 Algoma  (阿尔格玛)大学开始我现在的工作,一个图书系统管理员,我实在是对我的工作没有什么信心.尽管我在图书信息技术上有十年经验,对于我的第一个任务——协助开发和管理 Evergreen ...

  6. 最短路径:Dijkstra算法 C#

    class Program { ; static void Main(string[] args) { Console.WriteLine("各点距离矩阵如下:"); Consol ...

  7. python批量执行shell命令

    [root@master ~]# cat a.py #!/usr/bin/python # -*- coding:UTF- -*- import subprocess def fun(): subpr ...

  8. [LeetCode] 697. Degree of an Array 数组的度

    Given a non-empty array of non-negative integers nums, the degree of this array is defined as the ma ...

  9. 非线性函数图像表示(GLSL)

    说明:绘图区域x轴(0->1),y轴(0->1); 1.y = 0.5 + sqrt(x * (1 - x)) 2.y = smoothstep(a , b , x) y = smooth ...

  10. SQLServer 断开数据库连接

    数据库名:test1 1. 查询数据库当前连接 select * from master.sys.sysprocesses where dbid = db_id('test1') 2. 断开指定连接 ...