是否可以有选择地将服务部署到节点?

Is it possible to deploy a service selectively to node?

我正在使用 docker-swarm 模式部署服务。所以我有一个管理器和 4 个节点,这意味着我总共有 5 个实例。 但我想拆分 2 个和 2 个工作节点,并在不创建另一个实例的情况下向它们部署两个不同的服务。

这真的可能吗? 像 实例 1(经理)- 经理服务 a、b 实例 2(worker) - 服务 a 实例 3(worker) - 服务 a 实例 4(工人)- 服务 b 实例 4(工人)- 服务 b

因为我不想让另一个实例只有另一个经理..但在任何地方都找不到任何合理的解决方案

是的,您可以使用节点标签实现 -

--constraint 'node.labels.service== myservice1'

在 YAML 中 -

  placement:
    constraints: [node.labels.service == myservice1 ]

您只需要确保集群模式下的节点被正确标记即可。

标签更新 - https://docs.docker.com/engine/reference/commandline/node_update/

参考 -
单一服务 - https://docs.docker.com/v17.12/engine/reference/commandline/service_create/#specify-service-constraints-constraint

YAML - https://docs.docker.com/v17.12/datacenter/ucp/2.2/guides/admin/configure/add-labels-to-cluster-nodes/#deploy-a-service-with-constraints