在Docker swarm模式下,有没有办法让经理们';来自工人的信息?

在Docker swarm模式下,有没有办法让经理们';来自工人的信息?,docker,docker-swarm,raft,Docker,Docker Swarm,Raft,在docker swarm模式下,我可以运行docker node ls来列出swarm节点,但它不适用于工作节点。我需要一个类似的函数。我知道工作节点对集群没有很强的一致性视图,但应该有一种方法来获取当前的领导者或可到达的领导者 那么,有没有办法在docker swarm mode 1.12.1上的worker node上获取当前领导者/经理?来自worker node的文档和错误消息提到,您必须在manager node上才能执行swarm命令或查看群集状态: 来自工作节点的错误消息:“此节

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


那么,有没有办法在docker swarm mode 1.12.1上的worker node上获取当前领导者/经理?

来自worker node的文档和错误消息提到,您必须在manager node上才能执行swarm命令或查看群集状态:

来自工作节点的错误消息:“此节点不是swarm manager。工作节点无法用于查看或修改群集状态。请在管理节点上运行此命令,或将当前节点升级为管理节点。”

进一步思考后: 解决这个问题的一种方法是使用外部键值存储(如etcd)或Swarm支持的任何其他键值存储,并将选定的节点存储在那里,以便所有节点都可以查询它。您可以在Shippyard Docker management/UI项目中看到这方面的示例:


另一个简单的方法是在集群上运行一个redis服务和另一个宣布当选领导人的服务。此公告服务将有一个仅在管理器节点上运行的约束:
--constraint node.role==manager
您可以通过从工作人员处运行
docker info
来获取管理器地址。

我在github中讨论过这些问题,他们说这是出于安全考虑的行为。因此,您推荐的解决方案是合法的。谢谢你的回答。我不知道为什么这被否决了。对我来说,这应该是公认的答案。使用此命令,您至少可以获得manager节点的IP地址。