Docker:使用--placement-pref在特定节点上运行服务

时间:2019-03-20 14:13:52

标签: docker docker-compose dockerfile docker-swarm docker-machine

能帮我吗?

我想使用 place-pref 在特定的节点上更新服务并运行任务。

实际上我有3个节点(主机名):

管理员:ip-172-31-16-167

Worker-1 :ip-172-31-30-215

Worker-2 :ip-172-31-24-172

我已经部署了具有 2个任务(副本)的服务“ myapp_vote” ,这些服务在 Manager Worker-1上运行,我想在 Worker-1 Worker-2 上运行这些任务,所以我执行以下命令:

docker node update --label-add Vote=true ip-172-31-30-215

docker node update --label-add Vote=true ip-172-31-24-172

docker service update --placement-pref-add 'spread=node.labels.Vote' myapp_vote

但是什么也没发生,这两个任务继续在Manager和Worker-1上运行...

我尝试使用以下命令添加约束:

docker service update --constraint-add 'node.labels.Vote == true' myapp_vote

它有效,并且2个任务开始在 Worker-1 Worker-2 上运行。

是否可以使用 placement-pref 做同样的事情?

1 个答案:

答案 0 :(得分:0)

不可能只使用展示位置because来做到这一点:

缺少用于传播的标签的节点仍接收任务 作业。作为一组,这些节点按等比例接收任务 特定标签值所标识的其他任何组。在一个 在某种意义上说,缺少标签与将标签包含空值相同 附加值。如果该服务应在具有以下条件的节点上运行 标签用于价差首选项,首选项应为 加上约束条件。