重启后Docker worker从负载中释放

时间:2019-01-06 11:19:28

标签: docker docker-swarm swarm

我有一个由一名经理和一名工人组成的码头工人群。

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

  • 我重新启动了工作节点,所以我发现管理器现在已经承担了所有负载(4个容器)。
  • 重新启动后,管理器中仍然有4个容器,而工人没有任何容器。
  • 工作节点从重新启动返回后,负载是否应该自动重新分配?

  • 如果没有,如何重新分配负载?

1 个答案:

答案 0 :(得分:2)

只有一名经理,您没有HA,并且在发生故障时,将不会重新安排任何时间。您至少需要3位管理员来支持单个停机管理员方案。当单个管理器重新启动时,这是调度程序分配工作负载与现有节点重新连接之间的竞争条件,即工作节点不太可能获胜。

群集模式不会主动重新调整重新计划的工作负载,当将新节点添加到集群中时,或者只是重新启动关闭的节点时,现有任务将继续在其当前节点中运行,直到有更改迫使他们重新计划。该更改可以是故障节点,也可以是服务的更新。由于新节点可能不稳定/抖动,因此可以提高HA。

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

docker service update --force $service_name

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