你能帮助我吗?
我想更新一个服务,并在特定的任务上运行它的任务。节点 与 安置点.
其实我有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.
请是否可以做同样的事情,但与 安置点 ?
如果只用place-pref,是不可能做到的。因为:
缺少用于传播的标签的节点仍然接受任务分配。作为一个组,这些节点接受任务的比例与由特定标签值确定的任何其他组相同。从某种意义上说,缺失标签就等于标签附加了一个空值。如果服务应该 只是 在标签被用于传播偏好的节点上运行,该偏好应与约束相结合。