【问题标题】:Remove terminated instances ( managers ) from swarm , and recover swarm state从 swarm 中删除已终止的实例(管理器),并恢复 swarm 状态
【发布时间】:2020-05-20 03:52:59
【问题描述】:

我有一个 docker swarm 集群,masters 在 6 个 AWS 实例上运行,在一些测试期间,我们意外终止了 3 个实例(正在运行的 masters)。现在 swarm 状态似乎无法生成错误,例如:

错误:rpc 错误:code = Unknown desc = swarm 没有领导者。在线的经理可能太少。确保超过一半的经理在线

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

当我在其中一位管理器中发出 docker info 但无法执行任何操作时,我可以看到所有已终止的实例 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

【问题讨论】:

    标签: docker docker-swarm docker-swarm-mode


    【解决方案1】:

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

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

    在管理节点上,运行以下命令:

    docker swarm init --force-new-cluster
    

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

    【讨论】:

    • 您好,感谢您的回答。它对 1 个管理器不起作用,但对另一个管理器起作用,所有管理器都需要重新加入集群。但我一直认为重新初始化可能会创建具有新令牌 ID 的新集群,但似乎不是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多