gpt4 book ai didi

docker - 如何在多个 swarm 管理器集群中查找 docker swarm 中的当前管理器节点是哪个节点?

转载 作者:IT老高 更新时间:2023-10-28 21:34:03 28 4
gpt4 key购买 nike

我创建了一个 docker swarm 集群,其中包含 4 个节点 2 是 swarm manager(swarm 支持多个管理器)我知道如果当前管理器节点关闭,然后第二个管理器扮演成为集群管理器的角色。

在我的例子中,我正在向 swarm 管理器发出 rest 调用,以创建具有副本的服务等。

在某个时候,如果这位经理下台,而第二位经理成为经理,我怎么知道??

有什么方法可以动态通知特定节点是管理器吗?

请给我澄清一下??

最佳答案

使用 CLI

(手动)了解经理是否已更改的快速方法是通过 CLI:

$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
46aqrk4e473hjbt745z53cr3t node-5 Ready Active Reachable
61pi3d91s0w3b90ijw3deeb2q node-4 Ready Active Reachable
a5b2m3oghd48m8eu391pefq5u node-3 Ready Active
e7p8btxeu3ioshyuj6lxiv6g0 node-2 Ready Active
ehkv3bcimagdese79dn78otj5 * node-1 Ready Active Leader

您可以在MANAGER STATUS栏下查看当前Leader是哪个Manager。

您还可以使用 Leader 字段单独检查每个节点格式,例如:

$ docker node inspect <id-node> --format "{{ .ManagerStatus.Leader }}"

true

使用 Docker 远程 API

您还可以通过编程方式检查哪一位经理是领导者。 docker 远程 API 公开了一个 Nodes API endpoint 您可以使用它来列出节点

您可以提供一个 filter 作为参数,该参数采用 key=value 形式。

您可以使用该过滤器仅列出管理器节点(使用 role=manager),然后您可以解析和过滤 JSON 输出以保留其 Leader 字段的节点设置为 true(在 ManagerStatus 下)。

不幸的是,没有 leader 过滤器(yet),但我认为这可能是在 swarmkit 问题跟踪器上提出的有效增强功能。

在 docker swarm 模式下还没有事件流(这由 swarmkit 存储库上的 this issue 跟踪)。我想在未来,Leader switch 会触发一个事件,如果你正在监听这些事件(例如,如果你有一个特殊的设置并且想要动态更新 consul、nginx 或 Interlock 中的条目)。

关于docker - 如何在多个 swarm 管理器集群中查找 docker swarm 中的当前管理器节点是哪个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40245749/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com