docker 如何解决“Error response from daemon:rpc错误:code = Unknown desc =群没有领导者,”

vyswwuz2  于 2023-04-20  发布在  Docker
关注(0)|答案(3)|浏览(1003)

我正在努力学习docker和swarm。我创建了一个有3个节点的swarm,并使用virtualbox和docker-machine完成了一个示例。我一旦我重新启动了我的机器,所有节点都显示为停止。我使用

docker-machine start node1 node2 node3

所有节点都已启动,但我仍然无法列出节点,即使在主节点上也是如此,并出现以下错误:

docker@node1:~$ docker node ls                                                                                                               
Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.

node 1(master)上的docker状态也是pending。

Swarm: pending
  NodeID: c93hv5pixlfiei7q9qneuiuen
  Error: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.

每次我重新启动机器时都会出现这个错误。这导致我每次都要从启动开始设置所有内容。
有没有什么方法可以避免一次又一次地设置集群。
谢谢

isr3a4wc

isr3a4wc1#

你必须在 Boot 配置中包含docker service start。

hc8w905p

hc8w905p2#

阻止

demote要“关闭”/离开swarm的节点

# find node id
$ docker node ls
ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
o1iz67ehuenfzbyg2gjxayaee     hostA               Ready     Active         Reachable        20.10.6
fic857lrupfemxqie5rvq63yt *   hostB               Ready     Active         Leader           20.10.6

$ docker node demote o1iz67ehuenfzbyg2gjxayaee
Manager o1iz67ehuenfzbyg2gjxayaee demoted in the swarm.

# now on, the node can safely leave the swarm
$ docker swarm leave --force

React

没有健康节点重启。

启动〉〉停止Docker引擎(不是restart)并再次初始化Swarm。之后验证防火墙规则集,因为Docker会覆盖它。

$ systemctl stop docker
$ systemctl start docker

如果存在健康的管理器节点,则排空左节点。

参考https://cynici.wordpress.com/2018/05/31/docker-info-rpc-error-on-manager-node/

pbwdgjma

pbwdgjma3#

请检查Linux上的防火墙:
如果你想提升某个节点为管理器,请检查端口=2377是否在特定节点上接受请求。然后只有节点作为管理器工作。否则你会得到如下错误:
来自守护程序的错误响应:rpc error:code = Unknown desc =群没有领导者。可能是在线的管理器太少。请确保一半以上的管理器在线。
解决方案:在防火墙中添加端口号2377。

firewall-cmd --zone=public --add-port=2377/tcp --permanent

成功

firewall-cmd --reload

成功

相关问题