滚动更新、回滚服务

默认情况下, swarm一次只更新一个副本,并且两个副本之间没有等待时间,我们可以通过:

# 定义并行更新的副本数量
--update-parallelism

# 定义滚动更新的时间间隔
--update-delay
# 定义容器启动后监控失败的持续时间
--update-monitor # 定义容器失败的百分比
--update-max-failure-ratio # 定义容器启动失败之后所执行的动作
--update-failure-action
  •  示例1:创建8个副本,每次更新2个,更新间隔10s,20%任务失败继续
docker service create --name masl -e TZ="Asia/Shanghai" --network mrp_net --replicas 8 -p 8081:8080 \
--update-delay 10s \            #每次更新间隔10s
--update-parallelism 2 \          #每次允许两个服务一起更新
--update-failure-action continue \    #更新失败后的动作是继续
--rollback-parallelism 2 \         #回滚时允许两个一起
--rollback-monitor 20s \          #回滚监控时间20s
--rollback-max-failure-ratio 0.2 \    #回滚失败率20%
172.16.99.2:40305/masl:dev-yc-34
  • 查看配置信息:

  • 开始更新:
docker service update --image 172.16.99.2:40305/masl:dev-yc-35 masl

  • 示例2:
# 创建一个服务并运行3个副本,同步延迟10秒,10%任务失败则暂停
docker service create --name mysql_5_6_36 \
--replicas 3 \
--update-delay 10s \
--update-parallelism 1 \
--update-monitor 30s \
--update-failure-action pause \
--update-max-failure-ratio 0.1 \
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36
  • 示例3:

如果在创建服务时没有指定更新策略,也可以在更新的时候指定

# 两个服务一起更新,然后,隔一分钟,继续更新
docker service update --image 172.16.99.2:40305/masl:dev-yc-35 --update-parallelism 2 --update-delay 1m masl
  • 示例4:回滚服务
docker service update --rollback masl

注:默认只能回滚到上一次操作的状态,并不能连续回滚到指定操作

 

Docker Swarm(八)滚动更新、回滚服务的更多相关文章

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

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

  2. 入门Kubernetes - 滚动升级/回滚

    一.前言 上一篇文章中对yaml文件格式进行了解,并对k8s中各种主要资源通过yaml创建时的定义模板.接来下就进一步学习k8s的各种特点.并应用在示例中. 接下来先实现.Net Core Api程序 ...

  3. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  4. Docker Swarm(三)Service(服务)分配策略

    Service的分配原則 預設分散至多個nodes上 使用率較低的node優先配置 使用者可自行定義此分配模式 Service分配的3種方式 Service Constraints (服务约束) 参考 ...

  5. Docker Swarm Mode 学习笔记 (部署服务)

    使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点上执行. 新建服务 docker service create --replicas 3 -p 80:80 ...

  6. Docker Swarm 集群环境搭建及弹性服务部署

    上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...

  7. Docker swarm实战总结

    一.简介 Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源 ...

  8. Docker Swarm 常用命令

    # 管理配置文件 docker config     # 查看已创建配置文件     - docker config ls     # 将已有配置文件添加到docker配置文件中     - dock ...

  9. Docker Swarm(二)常用命令

    # 管理配置文件 docker config     # 查看已创建配置文件     - docker config ls     # 将已有配置文件添加到docker配置文件中     - dock ...

随机推荐

  1. 安装Dynamics CRM Report出错二

    提示账户不是本地用户且不受支持 找到所需的服务,使用域管理员用户更改服务运行的账户.应用和确定 重新启动服务 重新运行安装向导,环境验证成功

  2. 软工2021个人阅读作业#2——构建之法和CI/CD的运用

    项目 内容 这个作业属于哪个课程 2021学年春季软件工程(罗杰 任健) 这个作业的要求在哪里 2021年软工-热身阅读作业#2 我在这个课程的目标是 了解和掌握现代软件开发和项目管理技术,锻炼在大规 ...

  3. 死磕Spring之AOP篇 - Spring AOP自动代理(三)创建代理对象

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  4. ES6 第二天

    三点运算符 <script type="text/javascript"> function func(...params){ params.forEach(funct ...

  5. Day12 _63_获取当前线程对象

    给线程起名 * 1. Thread.currentThread(); 可以获取到当前线程对象,出现在哪就是获取哪个线程. * 2. thread.setName(); 给该线程起名字 * 3. thr ...

  6. map的遍历方法 map.entrySet()

    代码: @Test public void TestMap() throws Exception { Map<String, String> map = new HashMap<&g ...

  7. B/S与C/S架构的区别

    C/S架构优点:1)界面比较丰富2)安全性高3)实现的功能更多,可以实现更复杂的业务4)客户端可以处理部分业务,分担服务器端压力缺点:1)需要开发独立的客户端软件,开发成本高2)需要安装独立的客户端软 ...

  8. 让vim显示空格,tab字符,及vim多行注释

    1.显示 TAB 键 文件中有 TAB 键的时候,你是看不见的.要把它显示出来: :set list 现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里 ...

  9. 【JDK8】Java8 LocalDate操作时间和日期的API

    时间项目中的涉及到的时间处理非常多,犹豫SimpleDateFormat的不安全性以及Calendar等类在计算时比较复杂, 往往我们都会使用工具类来封装较多的日期处理函数, 但是JDK8中新增了操作 ...

  10. hdu4888 最大流(构造矩阵)

    题意:       让你构造一个矩阵,满足每一行的和,和每一列的和都等于他给的,还要判断答案是否唯一,还有一点就是矩阵内所有的数字都是[0,k]范围的. 思路:       这个题目看完就让我想起了h ...