如何确保每个Docker Swarm节点上至less运行一个服务

你好,docker群目前运行在3个节点上作为pipe理员。 我有一个简单的服务在所有3个节点上均匀分布6次。 但是,当我将1或2个节点脱机时,所有的服务在其余的节点/节点之间传播。 当我将所有节点重新联机时,所有服务都保留在未脱机的节点上。 我知道这是devise,因为这个概念是你不能为了重新平衡而离线服务。 但是为了在生产环境中运行,我需要在任何时候至less有一个服务在节点上运行。

是否有自动平衡,以确保至less有一个服务在每个Docker群集节点上运行?

这不适用于每个节点的多个副本 。 但是,如果您不知道全球服务:

Swarm模式有两种types的服务,即replicatedglobal 。 对于replicated服务,可以指定swarmpipe理器调度到可用节点的副本任务数。 对于global服务,调度程序在每个可用节点上放置一个任务

 docker service create \ --name <service name> \ --mode global \ <image name:tag> 

请注意--mode global

replicated模式是默认模式。

我知道这是devise,因为这个概念是你不能为了重新平衡而离线服务

您可以缩小规模并再次扩大规模,以便在不停机的情况下重新平衡各个节点上的容器,因为一个容器随时都可用。