2016-08-01 37 views
2

Manager版本Docker version 1.12.0-rc5, build a3f2063Docker1.12工人无法在集群加入(群:待定)

工人版本Docker version 1.12.0-rc5, build a3f2063

创建群经理:在工人

docker swarm init --advertise-addr "172.25.30.2:4243" 

    Swarm initialized: current node (3kmewyb10p8xj3ke5rpjyw4s8) is now a manager. 

    To add a worker to this swarm, run the following command: 
     docker swarm join \ 
     --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-enq26dqnwma38ij48hymtnioq \ 
     172.25.30.2:4243 

    To add a manager to this swarm, run the following command: 
     docker swarm join \ 
     --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-85cwe5pf779qw0knjn6wxdbim \ 
     172.25.30.2:4243 

然后创建的工作

docker swarm join --token SWMTKN-1-5lwzvv7au6hosiqqmdwmcxvmlmhtz4ts04jsg06284fq3posn0-enq26dqnwma38ij48hymtnioq 172.25.30.2:4243 
    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. 

我已经检查日志

time="2016-08-01T00:22:47.449844174-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.449962215-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450025342-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450081950-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450142443-07:00" level=warning msg="failed to retrieve remote root CA certificate: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:22:47.450202836-07:00" level=error msg="cluster exited with error: rpc error: code = 1 desc = context canceled" 
time="2016-08-01T00:23:31.351868722-07: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." 

docker info,我看到了 “群:待定”

我也做过docker swarm update也!但是,该工作人员无法加入群集。所以,我怎么能reslove

UPDATE-1

卸载&删除配置文件,然后安装搬运工1.12再次Docker version 1.12.0, build 8eab29e版本。

仍然面临着同样的问题(无法加入和“群:待定”在docker info)具有不同的错误/var/logs/upstat/docker.logs

time="2016-08-01T11:22:08.629760770-07: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." 

感谢。

+3

显然,我有同样的问题。对我来说,解决方案是确定工人的日期。要清楚的是,工人的日期不对(旧日期)。我让工作人员使用NTP服务器,并解决了问题(我猜)。我不是把它写成解决方案,因为我不完全理解发生了什么。我只知道它对我有用。 –

+1

有同样的问题。可能是因为生成的令牌(加入群集)取决于时间。 – lvthillo

+1

我有同样的问题。 @ IntiGonzalez-Herrera提到的日期/时间是解决方案。由于某些防火墙问题,我无法设置NTP服务器,但想象一下,我至少可以使用NTP将我所有的工作人员同步到管理员。我用于测试swarm的一个快速解决方案是将时间与date --set =“$(ssh user @ server date)”同步“ –

回答

3

事情是,我试图加入错误的“端口”(如输出中显示的docker swarm init)。

1)在“docker swarm init”之前,docker只在端口“4243”上运行。我检查了netstat -tulp | grep docker。所以我宣传了那个港口!

[email protected]:~# netstat -tulpn | grep docker 
tcp6  0  0 :::4243     :::*     LISTEN  8750/dockerd 

[email protected]:~# docker swarm init --advertise-addr "172.25.30.2:4243" 
Swarm initialized: current node (exvwgj0pu4cd124ljnblt9xff) is now a manager. 

To add a worker to this swarm, run the following command: 
    docker swarm join \ 
    --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-6zomhgu204m9alq51f632nzas \ 
    172.25.30.2:4243 

To add a manager to this swarm, run the following command: 
    docker swarm join \ 
    --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-axhgqgo4jqw4hv38x578m44wh \ 
    172.25.30.2:4243 

2)docker swarm init后,搬运工用4端口包括端口2377netstat -tupln | grep docker)上运行。

[email protected]:~# netstat -tulp | grep docker 
tcp6  0  0 [::]:2377    [::]:*     LISTEN  8750/dockerd  
tcp6  0  0 [::]:7946    [::]:*     LISTEN  8750/dockerd  
tcp6  0  0 [::]:4243    [::]:*     LISTEN  8750/dockerd  
udp6  0  0 [::]:7946    [::]:*        8750/dockerd 

1点,它是告诉与端口4243在工作运行docker swarm join。 (它不会工作!)

后来我做了docker swarm leave并加入了端口。现在我可以加入!

docker swarm join --token SWMTKN-1-5j9mpo8hepue6g1sjdas33thr92w1o9hlef5auwqpbxs3glt39-6zomhgu204m9alq51f632nzas 172.25.30.2:2377 
1

我正面临类似的问题,而在我的情况下,由于防火墙规则,端口被阻止。

+0

我知道你是一个新用户,所以你不能评论而不是回答,但是当提供一个答案请提供一个你找到的详细解决方案,以防其他人偶然发现你解决的同一个问题。请参阅[如何回答](https://stackoverflow.com/help/how-to-answer)。 –

+0

谢谢,我试过其他解决方案,我的问题归结为此。只要我打开防火墙一切正常。 – Luke101

+0

通过刷新iptables解决 – AJN

0

我遇到了同样的问题。我在Azure中运行coreos vms。我发现我所有的vms都有相同的私有ip地址和不同的公共ip地址。当vms是同一安全组的一部分时,通常会发生这种情况,但这次不是这种情况。问题是我的帐户已达到最大资源数量,所以我删除了诸如IP地址,nsg,网络等资源,然后重新配置了新的vms,它们拥有不同的私有ip,并且在运行命令时一切正常。我的码头版本是1.12.6

0

对我来说这是一个防火墙问题。

  1. 我试图平到管理器节点,并查验回

  2. 经过,如果端口使用telnet打开,是无法连接,并计算出它的端口号。

如果你正在运行的Centos比端口可以使用firewalld

检查可以轻松打开,如果firewalld运行

sudo firewall-cmd --state 

打开的端口,你想

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

根据您尝试连接的节点端口更改端口。