当前位置: 首页 > 知识库问答 >
问题:

节点无法加入群集

施俊驰
2023-03-14

我有3个虚拟机。它们都有docker 1.12,并且在centos7上运行。所有端口都已打开,vm可以在我启动集群时相互ping

docker swarm init --advertise-addr 192.168.140.12

Docker信息告诉我:

Swarm: active
 NodeID: 0drcj2nku1mv8t16fxva48edxx
 Is Manager: true
 ClusterID: cchn0yzospwoe1h9f55d7omxx
 Managers: 1
 Nodes: 1

现在,我尝试将节点(其他VM)加入集群。我使用启动管理器后推荐的命令。

docker swarm join \
     --token SWMTKN-1-48ythur5k6ckkz90ttlprw37p9z3ldclws51qirw5wdyfmvevr-3sb2t66b2fj6e4dhmfo1vavxx \
     192.168.140.12:2377

但我得到了:

Error response from daemon: Timeout was reached before node was joined. Attempt to join the cluster will continue in the background. Use "docker info" command to see the current swarm status of your node.

Docker信息告诉我:

Swarm: pending
 NodeID:
 Error: rpc error: code = 1 desc = context canceled
 Is Manager: false
 Node Address: 192.168.140.14

集群管理器:

# netstat -tulpn | grep docker
tcp6       0      0 :::2377                 :::*                    LISTEN      1602/dockerd
tcp6       0      0 :::7946                 :::*                    LISTEN      1602/dockerd
tcp6       0      0 :::8080                 :::*                    LISTEN      3398/docker-proxy
tcp6       0      0 :::32768                :::*                    LISTEN      3199/docker-proxy
tcp6       0      0 :::32769                :::*                    LISTEN      3219/docker-proxy
tcp6       0      0 :::32770                :::*                    LISTEN      3341/docker-proxy
tcp6       0      0 :::32771                :::*                    LISTEN      3436/docker-proxy
tcp6       0      0 :::2375                 :::*                    LISTEN      1602/dockerd
udp6       0      0 :::7946                 :::*                                1602/dockerd

如何调试此问题,或者我是否忘记执行某些重要步骤?服务器之间是否需要ssh访问?谢谢

节点上的日志:

Aug  8 09:50:24 localhost dockerd: time="2016-08-08T09:50:24.393432145-04:00" level=error msg="Handler for POST /v1.24/swarm/leave returned error: This node is not part of swarm"
Aug  8 09:51:01 localhost su: (to root) worker1 on pts/1
Aug  8 09:51:34 localhost dockerd: time="2016-08-08T09:51:34.384408514-04:00" level=error msg="Handler for POST /v1.24/swarm/join returned error: Timeout was reached before node was joined. Attempt to join the cluster will continue in the background. Use \"docker info\" command to see the current swarm status of your node."
Aug  8 09:51:40 localhost su: (to root) worker1 on pts/1
Aug  8 09:52:47 localhost dhclient[1277]: DHCPREQUEST on eno16777736 to 192.168.140.254 port 67 (xid=0x11f8fba8)
Aug  8 09:52:47 localhost dhclient[1277]: DHCPACK from 192.168.140.254 (xid=0x11f8fba8)
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    address 192.168.140.13
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    plen 24 (255.255.255.0)
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    gateway 192.168.140.2
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    server identifier 192.168.140.254
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    lease time 1800
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    nameserver '192.168.140.2'
Aug  8 09:52:47 localhost NetworkManager[953]: <info>    domain name 'localdomain'
Aug  8 09:52:47 localhost NetworkManager[953]: <info>  (eno16777736): DHCPv4 state changed bound -> bound
Aug  8 09:52:47 localhost dbus[878]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
Aug  8 09:52:47 localhost dbus-daemon: dbus[878]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
Aug  8 09:52:47 localhost systemd: Starting Network Manager Script Dispatcher Service...
Aug  8 09:52:47 localhost dhclient[1277]: bound to 192.168.140.13 -- renewal in 713 seconds.
Aug  8 09:52:47 localhost dbus[878]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Aug  8 09:52:47 localhost dbus-daemon: dbus[878]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Aug  8 09:52:47 localhost nm-dispatcher: Dispatching action 'dhcp4-change' for eno16777736
Aug  8 09:52:47 localhost systemd: Started Network Manager Script Dispatcher Service.

有时警告:

level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled

共有3个答案

子车飞鹏
2023-03-14

正如wenjianhn所解释的,确保您没有在工作节点上为Docker配置http代理(如下所述)。事实上,Swarm节点通过HTTP(默认端口2377)进行通信;因此,如果您配置了http代理,您的工作节点将使用配置的http代理,即使管理器节点位于您的LAN中。

另外,请确保没有防火墙阻止端口2377上的通信:

user@workernode$ telnet ip-of-manager 2377

如果无法打开端口2377上的telnet连接,这意味着此端口被防火墙(工作节点的防火墙或管理器的防火墙)阻止。

方昊英
2023-03-14

我所有虚拟机上的主机名都是:localhost。本地域。我在每台服务器上更改了/etc/hosts中的主机名并重新启动。现在我能够创建我的swarm集群并成功添加节点。

齐俊贤
2023-03-14

可能您使用的是http代理。

您可以使用以下命令查看dockerd正在做什么。

# strace -Fp `pidof dockerd` 2>&1 |grep -v futex |grep -v epoll_wait |grep -v pselect
 类似资料:
  • 问题内容: 好的,这应该不难,我试图在Elasticsearch集群中运行2个节点,并在尝试启动node-1(作为主节点的node-2已经启动)时遇到异常。对两个实例都使用elasticsearch v 5.0.0 例外: 无法将加入请求发送到主节点,原因是RemoteTransportException无法添加找到的具有相同ID但却是不同节点实例的现有节点的节点] 节点1配置: 节点名称:SAN

  • 我有两个服务器在Docker群,但当我需要添加第三个服务器-我得到的结果: 来自守护进程的错误响应:rpc错误:code=14 desc=grpc:连接不可用 一个网络中的所有服务器。 有什么问题吗?

  • jps输出正确: 在主机上: 在5个从节点上:

  • 问题内容: 管理员版本, 工人版本。 创建了Swarm管理器: 然后创建工人 我已经检查了工人的日志 在中,我看到了“虫群:待定” 我也做到了!尽管如此,该工作人员仍无法加入集群。所以,我该怎么爱 更新1 卸载并删除配置文件,然后再次安装docker 1.12版本。 仍然面临着相同的问题(无法加入和中的“ Swarm:Pending” ),其中存在DIFFERENT错误 谢谢。 问题答案: 问题是

  • 问题内容: 我想在Kubernetes中创建6个节点的Redis集群。我正在使用 Minikube 运行 kubernetes 。 以下是我创建6节点群集的实现。 创建有状态集之后,我将从一个Pod内部执行redis create cluster命令。 这些都是pod的ips。有了这个,我就能启动集群了。但是一旦我手动删除使用 例如,删除IP地址为172.17.0.6:6379的Redis节点(假

  • 我使用他们的web UI在EMR上创建了一个AWS Spark2.2集群(这里是新手)。我知道我需要连接到主节点,以便开始发出pyspark命令来学习Spark。但是,当我尝试连接到主节点时,它给我一个错误。在浏览了internet之后,我发现使用可能有助于调试正在进行的操作,但我找不到任何有用的信息。下面是我的ssh调试日志。 有人能指出这里的问题是什么吗?编辑:我已经尝试过将端口22添加到安全