在 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
我遇到以下问题:
我有一个 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