在 docker swarm 模式下,我可以运行docker node ls来列出 swarm 节点,但它不适用于工作节点。我需要一个类似的功能。我知道工作节点对集群没有强烈一致的看法,但应该有一种方法可以获取当前的领导者或可达的领导者。
那么有没有办法在 docker swarm mode 1.12.1 的工作节点上获取当前的领导者/管理者?
在 docker swarm 模式下,我可以运行docker node ls来列出 swarm 节点,但它不适用于工作节点。我需要一个类似的功能。我知道工作节点对集群没有强烈一致的看法,但应该有一种方法可以获取当前的领导者或可达的领导者。
那么有没有办法在 docker swarm mode 1.12.1 的工作节点上获取当前的领导者/管理者?
来自工作节点的文档和错误消息提到您必须在管理节点上才能执行 swarm 命令或查看集群状态:
来自工作节点的错误消息: “此节点不是集群管理器。工作节点不能用于查看或修改集群状态。请在管理器节点上运行此命令或将当前节点提升为管理器。”
经过进一步思考: 解决这个问题的一种方法是使用外部键/值存储,如 etcd 或 Swarm 支持的任何其他键/值存储,并将选定的节点存储在那里,以便所有节点都可以查询它。您可以在 Shipyard Docker 管理/UI 项目中看到相关示例:http: //shipyard-project.com/
另一种简单的方法是在集群上运行一个 redis 服务和另一个服务来宣布选出的领导者。此公告服务将有一个限制,只能在管理器节点上运行:--constraint node.role == manager
docker info
您可以通过从工作人员运行来获取经理地址。