用 Label 控制 Service 的位置
来源:互联网 发布:js页面时间格式 编辑:程序博客网 时间:2024/05/16 09:31
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode。无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 Service 的运行位置呢?
答案是:能,使用 label。
逻辑分两步:
为每个 node 定义 label。
设置 service 运行在指定 label 的 node 上。
label 可以灵活描述 node 的属性,其形式是 key=value,用户可以任意指定,例如将 swarm-worker1
作为测试环境,为其添加 label env=test
:
docker node update --label-add env=test swarm-worker1
对应的,将 swarm-worker2
作为生产环境,添加 label env=prod
:
docker node update --label-add env=prod swarm-worker2
现在部署 service 到测试环境:
docker service create \ --constraint node.labels.env==test \ --replicas 3 \ --name my_web \ --publish 8080:80 \ httpd
--constraint node.labels.env==test
限制将 service 部署到 label=test 的 node,即 swarm-worker1
。从部署结果看,三个副本全部都运行在 swarm-worker1
上。
可以通过 docker service inspect
查看 --constraint
的设置:
更新 service,将其迁移到生产环境:
docker service update --constraint-rm node.labels.env==test my_web docker service update --constraint-add node.labels.env==prod my_web
删除并添加新的 constraint,设置 node.labels.env==prod
,最终所有副本都迁移到了 swarm-worker2
。
label 还可以跟 global 模式配合起来使用,比如只收集生产环境中容器的日志。
docker service create \ --mode global \ --constraint node.labels.env==prod \ --name logspout \ --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \ gliderlabs/logspout
只有 swarm-worker2
节点上才会运行 logspout。
Label 就讨论到这里,下一节我们学习 Health Check。
书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
- 用 Label 控制 Service 的位置
- label中省略号的位置
- 【Cocos2d-x】控制label中指定位置的字符的动作
- 自定义UIButton 图片与label的位置
- iOS 获取label上点击位置的字符位置
- 用css控制背景图片的位置,大小
- 用css控制背景图片的位置,大小
- 用代码控制ListView的位置
- 鼠标的位置控制
- 使用label标签控制form的提交
- mxGraph控制vertex的label信息
- service的启动控制
- 调整label相对位置
- 用BroadcastReceiver控制Service
- R语言基础绘图包--控制axis label位置--par(mgp)与mtext
- latex 关于表格label位置引起的问题
- 54.变换UIButton中的label和image的位置
- 继承Button,重新定义Button的图片和label位置
- 马士兵老师JAVA学习(1)
- C/C++的编译器|编译环境
- JS加载360广告;
- python画五角星和螺旋线
- 菜鸟记录之JDK1.8十大新特性
- 用 Label 控制 Service 的位置
- 流量时代:线上抓娃娃为网络直播平台添砖加瓦!
- json_encode中文和斜杠
- 通过LaunchScreen自定义启动动画
- Capstone日志2017-12-14
- Pythone系列(1)之Linux 安装Python
- CSS创意开关
- w7 安装docker
- 实现线程同步的几种方式