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

问题描述 投票:2回答:1

你能帮助我吗?

我想更新一个服务,并在特定的任务上运行它的任务。节点安置点.

其实我有3个节点(主机名)。

经理 IP-172-31-16-167

工人-1 IP-172-31-30-215

工人-2 IP-172-31-24-172

而我有部署服务 "myapp_vote"2项任务 (复制品),其运行在 经理人工人-1,我想在 工人-1工人-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上运行...。

我试着用下面的命令添加约束条件,结果成功了,这两个任务开始在Manager和Worker-1上运行。

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

它工作了,这两个任务开始运行在 工人-1工人-2.

请是否可以做同样的事情,但与 安置点 ?

docker docker-compose dockerfile docker-swarm docker-machine
1个回答
0
投票

如果只用place-pref,是不可能做到的。因为:

缺少用于传播的标签的节点仍然接受任务分配。作为一个组,这些节点接受任务的比例与由特定标签值确定的任何其他组相同。从某种意义上说,缺失标签就等于标签附加了一个空值。如果服务应该 只是 在标签被用于传播偏好的节点上运行,该偏好应与约束相结合。

© www.soinside.com 2019 - 2024. All rights reserved.