在 docker 个节点组而不是节点中平衡 docker 服务

Balance docker service in docker node groups instead of nodes

我遇到以下问题:

我有一个 docker 服务,有 2 个副本和 4 个工作人员,分布在 2 个不同的数据中心。

我知道当 swarm 产生新的副本时,每次都会在不同的主机上进行。如果我以某种方式标记它们,是否可以将其配置为在不同的节点组中生成它?

是的,你可以。

您可以将标签附加到节点,如下所示:

docker node update --label-add region=east worker-1
docker node update --label-add region=east worker-2
docker node update --label-add region=west worker-3
docker node update --label-add region=west worker-4

然后您可以使用约束或 placement-prefs:

开始您的服务
# This will force your service to only run on nodes in your 'east' region
docker service create \
    --name myservice-east \
    --replicas 2 \
    --constraint node.labels.region==east \
    yourimage

# This will spread the replicas across the regions:
docker service create \
  --replicas 2 \
  --name spread-service \
  --placement-pref 'spread=node.labels.region' \
  myotherimage