从 swarm 中删除终止的实例(管理器) ,并恢复 swarm 状态

Remove terminated instances ( managers ) from swarm , and recover swarm state

我有一个 docker swarm 集群,主节点 运行 在 6 个 AWS 实例上,在一些测试中,我们不小心终止了 3 个实例(运行 主节点)。现在 swarm state 似乎无法生成错误,如:

Error: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online

我尝试通过 docker 命令删除已终止的管理器,但无论我执行什么命令,如 docker node ls 或其他命令,它都会给我同样的错误如上。我也尝试添加新节点,同时添加到 swarm 它会产生相同的错误。

当我在其中一位管理器中发出 docker 信息时,我可以看到所有已终止的实例 IP,但无法执行任何操作。我怎样才能从这种状态中恢复过来?

 Node Address: 10.80.8.195
 Manager Addresses:
  10.80.7.104:2377
  10.80.7.213:2377
  10.80.7.226:2377
  10.80.7.91:2377
  10.80.8.195:2377
  10.80.8.219:2377

swarm 中的集群设施由管理器节点维护。 在您的情况下,您通过删除一半的集群管理器而丢失了集群仲裁。在这种特殊情况下,没有节点可以选出新的管理者领导者,也没有管理者可以控制群体。

在这种情况下,恢复集群的唯一方法是重新初始化它,这将强制创建一个新集群。

在管理节点上,运行这个命令:

docker swarm init --force-new-cluster

而在其他管理器节点上,我不记得他们是否加入了新集群,或者您是否需要离开并重新加入集群。