Docker Swarm 服务版本更新
环境:
- 系统:Centos 7.4 x64
- 应用版本:Docker 18.09.0
- 管理节点:192.168.1.79
- 工作节点:192.168.1.78
- 工作节点:192.168.1.77
1、管理节点:创建服务设置更新策略
docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
--update-parallelism 2 \
--update-failure-action continue \
redis:3.0.6
# 创建命令
docker service create \
# 副本数
--replicas 3 \
# 服务名
--name redis \
# 设定容器间更新时间间隔
--update-delay 10s \
# 更新时同时并行更新数量,默认1
--update-parallelism 2 \
# 任务容器更新失败时的模式 continue为继续使用
--update-failure-action continue \
# 镜像
redis:3.0.6
命令解析
命令:docker service ls
ID NAME MODE REPLICAS IMAGE
v76p9bl941bk redis replicated 3/3 redis:3.0.6
查看添加服务
命令:docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
2pruajw13gud redis.1 redis:3.0.6 slave02 Running Running 4 minutes ago
ma8ait8xcagl redis.2 redis:3.0.6 slave02 Running Running 4 minutes ago
igpwcuyumwzu redis.3 redis:3.0.6 slave01 Running Running 5 minutes ago
查看启动情况
2、管理节点:手动更新服务版本
docker service update --image redis:3.0.7 redis
命令:docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tio9f89x7fzk redis.1 redis:3.0.7 slave02 Running Running 2 minutes ago
2pruajw13gud \_ redis.1 redis:3.0.6 slave02 Shutdown Shutdown 2 minutes ago
e3fuv9fm202x redis.2 redis:3.0.7 slave01 Running Running 2 minutes ago
ma8ait8xcagl \_ redis.2 redis:3.0.6 slave02 Shutdown Shutdown 2 minutes ago
zku5h3h4dqkn redis.3 redis:3.0.7 slave01 Running Running 2 minutes ago
igpwcuyumwzu \_ redis.3 redis:3.0.6 slave01 Shutdown Shutdown 3 minutes ago
查看更新情况
docker service inspect redis
[
{
"ID": "v76p9bl941bk87pwwk3nvtwfe",
"Version": {
"Index": 1479
},
"CreatedAt": "2018-11-07T06:19:23.210686656Z",
"UpdatedAt": "2018-11-07T06:30:53.565888582Z",
"Spec": {
# 服务名称
"Name": "redis",
"TaskTemplate": {
"ContainerSpec": {
# 服务镜像
"Image": "redis:3.0.7@sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20",
"DNSConfig": {}
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {},
"ForceUpdate": 0
},
"Mode": {
# 模式
"Replicated": {
# 副本数
"Replicas": 3
}
},
# 服务更新时应用策略
"UpdateConfig": {
# 同时更新任务数
"Parallelism": 1,
# 更新间隔时间
"Delay": 10000000000,
# 更新失败后动作 pause暂停
"FailureAction": "pause",
# 更新失败后继续运行半分比
"MaxFailureRatio": 0
},
"EndpointSpec": {
# 默认分配1个虚拟IP
"Mode": "vip"
}
},
"PreviousSpec": {
"Name": "redis",
"TaskTemplate": {
"ContainerSpec": {
"Image": "redis:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842",
"DNSConfig": {}
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {},
"ForceUpdate": 0
},
"Mode": {
"Replicated": {
"Replicas": 3
}
},
"UpdateConfig": {
"Parallelism": 1,
"Delay": 10000000000,
"FailureAction": "pause",
"MaxFailureRatio": 0
},
"EndpointSpec": {
"Mode": "vip"
}
},
"Endpoint": {
"Spec": {}
},
"UpdateStatus": {
"State": "completed",
"StartedAt": "2018-11-07T06:29:00.44192283Z",
"CompletedAt": "2018-11-07T06:30:53.56587273Z",
"Message": "update completed"
}
}
]
查看服务详细信息
注:升级过程,按顺序停止一个容器任务去对这个停止的任务进行更新,最后更新为running状态,再继续往下更新其他容器任务,如果更新失败它会暂停更新,切换到下一个容器任务继续更新直到所有容器。
Docker Swarm 服务版本回滚
1、管理节点:创建服务时设定回滚策略
docker service create \
--name my_web \
--replicas 10 \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio .2 \
nginx:1.12
# 创建服务
docker service create \
# 服务名
--name my_web \
# 副本数
--replicas 10 \
# 同时执行回滚数动作
--rollback-parallelism 2 \
# 每次容器与容器之间的回滚时间间隔
--rollback-monitor 20s \
# 回滚故障率如果小于百分比允许运行
--rollback-max-failure-ratio .2 \
# 使用镜像
nginx:1.12
命令解析
命令:docker service ps -f "DESIRED-STATE=running" my_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
bgqpm1s0a24l my_web.1 nginx:1.12 slave01 Running Running about a minute ago
jttvdgzpiz02 my_web.2 nginx:1.12 slave01 Running Running about a minute ago
t8yqfrzoa7fj my_web.3 nginx:1.12 slave02 Running Running about a minute ago
xgh712gi2eld my_web.4 nginx:1.12 slave02 Running Running about a minute ago
2tnw3tnofyn5 my_web.5 nginx:1.12 slave01 Running Running about a minute ago
on4khcpkb2h7 my_web.6 nginx:1.12 slave02 Running Running about a minute ago
gxdeqfbmq60k my_web.7 nginx:1.12 slave01 Running Running about a minute ago
kmyz0btgb0hk my_web.8 nginx:1.12 slave02 Running Running about a minute ago
lso2ry7f2v0o my_web.9 nginx:1.12 slave01 Running Running 2 minutes ago
ee21b2ud0mkk my_web.10 nginx:1.12 slave02 Running Running about a minute ago
查看创建服务
2、管理节点:更新服务提升一个版本
docker service update --image nginx:1.13 my_web
docker service ps -f "DESIRED-STATE=running" my_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
bgqpm1s0a24l my_web.1 nginx:1.13 slave01 Running Running about a minute ago
jttvdgzpiz02 my_web.2 nginx:1.13 slave01 Running Running about a minute ago
t8yqfrzoa7fj my_web.3 nginx:1.13 slave02 Running Running about a minute ago
xgh712gi2eld my_web.4 nginx:1.13 slave02 Running Running about a minute ago
2tnw3tnofyn5 my_web.5 nginx:1.13 slave01 Running Running about a minute ago
on4khcpkb2h7 my_web.6 nginx:1.13 slave02 Running Running about a minute ago
gxdeqfbmq60k my_web.7 nginx:1.13 slave01 Running Running about a minute ago
kmyz0btgb0hk my_web.8 nginx:1.13 slave02 Running Running about a minute ago
lso2ry7f2v0o my_web.9 nginx:1.13 slave01 Running Running 2 minutes ago
ee21b2ud0mkk my_web.10 nginx:1.13 slave02 Running Running about a minute ago
查看更新服务
3、管理节点:手动回滚到上一个版本
docker service update --rollback my_web
命令:docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nikder7y06o2 my_web replicated 10/10 nginx:1.12
查看回滚版本
Docker Swarm 服务版本更新与回滚的更多相关文章
-
基于 Consul 的 Docker Swarm 服务发现
Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...
-
Docker Kubernetes 容器更新与回滚
Docker Kubernetes 容器更新与回滚 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...
-
【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
-
Docker Swarm 服务编排之命令
一.简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理.同样在Swarm集群中,可以使用docker stack 将一组相关联的服 ...
-
k8s用kubectl管理应用升级,服务发布与回滚,扩缩容
应用升级 Kubectl set image --help 有案例指定新版本 [root@k8s-master ~]# kubectl set image deployment/nginx nginx ...
-
jenkinsfile or pipline 实现微服务自动发布回滚流程
1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...
-
Docker Swarm 常用命令
# 管理配置文件 docker config # 查看已创建配置文件 - docker config ls # 将已有配置文件添加到docker配置文件中 - dock ...
-
Docker Swarm集群部署
一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...
-
docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...
随机推荐
-
D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
-
centos使用网易163yum源
CentOS系统自带的更新源的速度实在是慢,为了让CentOS6使用速度更快的YUM更新源,可以选择163(网易)的更新源. 1.下载repo文件 wget http://mirrors.163.co ...
-
HDU 2102 A计划(三维BFS)
这题太欢乐了......虽然wa了几次,但是想到骑士在两幅图的传送门中传来传去就觉得这骑士太坑了 #include <cstdio> #include <iostream> # ...
-
js中的Call与apply方法
看到同行写得不错,直接转载了...0.0 祝大家天天开心! 例子来源http://uule.iteye.com/blog/1158829
-
3D项目处理点选操作步骤
1.用notepad++模型的obj格式文件,查找到模型各个部分的名称,命名规则:g mesh......,把名字改为规则命名. 2.选择处理 #ifdef _DEBUG #pragma comm ...
-
Implementing a builder: Zero and Yield
原文地址:http://fsharpforfunandprofit.com/posts/computation-expressions-builder-part1/ 前面介绍了bind和continu ...
-
MVC 路由设置伪静态
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/ ...
-
转载及总结:cron表达式详解,cron表达式写法,cron表达式例子
cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}例 "0 0 12 ? * WED" 在每星期三下午12:00 执行(年份通常 ...
-
mybatis入门 配置文件解释 及测试
这里介绍一下mybatis 根据mybatis的官网说明,mybatis是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置 ...
-
Oracle数据库管理----性能优化
https://blog.csdn.net/yzllz001/article/details/54848513 数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找 ...