Docker 工人在重启后从负载中解脱出来

Docker worker is freed from the load after reboot

我有一个 docker 群,由一名经理和一名工人组成。

当我创建一个有 4 个副本的服务时,我在每个节点上有两个容器(2 个在管理节点上,2 个在工作节点上)。

只有一个管理器,您没有 HA,当它出现故障时,不会重新安排任何内容。您至少需要 3 个管理器才能支持单个向下管理器场景。当单个管理器重新启动时,这是调度程序分配工作负载和现有节点重新连接之间的竞争条件,工作节点不太可能获胜。

Swarm 模式也不会主动重新调整重新安排工作负载,当向集群添加新节点时,或者只是重新启动停机节点时,现有任务将继续 运行 在其当前节点中,直到发生强制更改他们被重新安排。该更改可以是关闭节点,也可以是对服务的更新。这提高了 HA,因为新节点可能是 unstable/flapping.

要强制群模式重新平衡服务,您可以运行:

docker service update --force $service_name

这将强制更新而不对该服务进行任何其他修改。 (将 $service_name 替换为您的服务名称或 ID。)