您的docker swarm目前在3个节点上作为管理员运行。我有一个简单的服务复制6次均匀分布在所有3个节点上。但是,当我将1个或2个节点脱机时,所有服务在其余节点/节点之间传播。当我将所有节点重新联机时,所有服务都保留在未脱机的节点/节点上。我知道这是设计理念,因为你不能为了重新平衡而使服务脱机。但是要在生产中运行它,我需要始终在节点上运行至少一个服务。
是否有自动平衡以确保每个Docker Swarm节点上至少运行一个服务?
答案 0 :(得分:1)
这不适用于每个节点的多个副本。但是,如果您不了解全球服务:
群集模式有两种类型的服务:replicated
和global
。对于replicated
服务,您可以指定swarm管理器计划到可用节点的副本任务数。对于global
服务,调度程序会在每个可用节点上放置一项任务。
docker service create \
--name <service name> \
--mode global \
<image name:tag>
请注意--mode global
。
replicated
模式是默认模式。
我知道这是设计理念,因为您无法接受服务 离线以便重新平衡
您可以缩小并再次向上扩展以在不停机的情况下跨节点重新平衡容器,因为一个容器将始终可用。