能帮我吗?
我想使用 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 做同样的事情?
答案 0 :(得分:0)
不可能只使用展示位置because来做到这一点:
缺少用于传播的标签的节点仍接收任务 作业。作为一组,这些节点按等比例接收任务 特定标签值所标识的其他任何组。在一个 在某种意义上说,缺少标签与将标签包含空值相同 附加值。如果该服务仅应在具有以下条件的节点上运行 标签用于价差首选项,首选项应为 加上约束条件。