我创建了一个 docker swarm 集群 与 4个节点出了它 2 是群管理员 (swarm 支持多个管理器) 我明白如果当前 管理节点下降然后是 第二个经理 担任角色 成为群管理员。
就我而言,我正在解雇 休息电话发送给 swarm manager 以创建带有副本的服务等等。
在某个时候,如果这位经理倒台,而第二位经理成为经理,我怎么知道?
有什么方法可以动态通知特定节点是管理器?
请给我澄清一下??
Best Answer-推荐答案 strong>
使用命令行界面
(手动)知道经理是否更改的快速方法是通过 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 单独检查每个节点的格式。字段,例如:
$ docker node inspect <id-node> --format "{{ .ManagerStatus.Leader }}"
true
使用 Docker 远程 API
您还可以通过编程方式检查哪一位经理是领导者。 docker 远程 API 公开了一个 Nodes API endpoint 您可以使用 列出节点 .
您可以提供一个过滤器作为参数,它采用 key=value 形式。
您可以使用该过滤器仅列出管理器节点(使用 role=manager ),然后您可以解析和过滤 JSON 输出以保留其 Leader 的节点。字段设置为 true (在 ManagerStatus 下)。
不幸的是没有 leader filter ( yet ) 但我认为这可能是对 swarmkit 问题跟踪器提出的有效增强。
在 docker swarm 模式下还没有事件流(这是由 this issue 在 swarmkit 存储库中跟踪的)。我想象将来,一个事件将在 Leader 切换时触发,如果您正在监听这些事件,您将收到新的 leader 动态通知(例如,如果您有特殊设置并希望动态更新 consul、nginx 中的条目)或互锁)。
关于docker - 如何在多群管理器集群中的docker swarm中找到当前哪个节点是管理器节点?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/40245749/
|