在 Docker swarm 模式下,有没有办法从 worker 那里获取 manager 的信息?

In Docker swarm mode, is there a way to get managers' information from workers?

在 docker 群模式下,我可以 运行 docker node ls 列出群节点,但它不适用于工作节点。我需要一个类似的功能。我知道工作节点没有集群的强一致性视图,但应该有一种方法来获取当前领导者或可达领导者。

那么有没有办法在 docker 群模式 1.12.1 的工作节点上获取电流 leader/manager?

来自工作节点的文档和错误消息提到您必须在管理器节点上才能执行 swarm 命令或查看集群状态:

来自工作节点的错误消息: "This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager."

进一步思考: 解决这个问题的一种方法是使用外部 key/value 存储,如 etcd 或 Swarm 支持的任何其他 key/value 存储,并将选定的节点存储在那里,以便所有节点都可以查询它。您可以在 Shipyard Docker 管理/UI 项目中看到相关示例:http://shipyard-project.com/

A​​nother simple way would be to 运行 a redis service on the cluster and another service to announce the elected leader.此公告服务在管理器节点上仅具有 运行 的约束:--constraint node.role == manager

您可以通过 运行 docker info 从工作人员那里获取经理地址。