失败join节点到docker群

我在Docker Swarm中有两台服务器,但是当我需要添加第三台服务器时 – 我得到的结果是:

来自守护进程的错误响应:rpc错误:代码= 14 desc = grpc:连接不可用

一个networking中的所有服务器。

可能是什么问题呢?

我会说这可能与防火墙有关。 确保您的端口在第三个盒子上正确configuration。 从Docker文档 :

打开主机之间的协议和端口以下端口必须可用。 在某些系统上,这些端口默认打开。

TCP端口2377用于集群pipe理通信TCP和UDP端口7946用于通信节点UDP端口4789用于覆盖networking通信

从官方Docker群教程

以下端口必须在您的泊坞窗主机上打开。

TCP port 2377 for cluster management communications TCP and UDP port 7946 for communication among nodes UDP port 4789 for overlay network traffic 

要启用此端口,请在所有泊坞窗主机上运行以下命令。 请按照digitalocen文章完整的步骤。

 firewall-cmd --add-port=2376/tcp --permanent firewall-cmd --add-port=2377/tcp --permanent firewall-cmd --add-port=7946/tcp --permanent firewall-cmd --add-port=7946/udp --permanent firewall-cmd --add-port=4789/udp --permanent 

从官方文档更容易:

  1. 重新启动swarmpipe理器:

    • docker swarm leave --force取下群
    • 重新docker swarm init --advertise-addr [ip of the machine, check it with 'docker-machine ls']:23772377是swarm连接的端口 )
  2. 然后使用docker-machine ssh myvm2 "docker swarm join \ --token <token> \ <ip>:<port>"将您的机器添加到群集中

正如其他人所指出的,封港可能是其中一个原因。 但是我也发现了更多。

最近版本的Docker正遭受着巨大的代理问题:

根据这个评论 ,这个修复“很可能”成为Docker版本17.11 ,并被“考虑”在17.09版本中发布。

我所有的端口都是打开的,前面提到的链接中描述的NO_PROXY破解不起作用。

我尝试了17.05之间的所有Docker版本,一直到17.11.0-ce-rc3, build 5b4af4f没有成功,这让我怀疑罪魁祸首可能是Vagrant(我正在使用2.0.1 )和/或VirtualBox (使用5.1.30 )。 升级这两者中的任何一个通常会导致各种随机问题。 但是,而不是降级这些家伙,我试图升级我运行的Vagrant箱子。

在我的双机设置中,我将第一个节点的box切换到fso/artful64-desktop ,第二个节点的box切换到fso/artful64 (两个版本2017-11-01 )。 令我惊讶的是,这使得Docker Swarm在版本17.10.0-ce17.11.0-ce-rc3, build 5b4af4f 。 请注意,如果你想使用Ubuntu 17.10盒大声笑(可以手动修复 ),Vagrant 2.0.1上的专用networking就被打破了。

我们遇到的错误信息不完全一样,但非常相似:

来自守护程序的错误响应:rpc错误:代码=不可用desc = grpc:连接不可用

在我们的例子中,我们将代理设置添加到docker守护程序中,以便从公司代理后面访问Docker集线器映像。 因此,当试图docker群体join一个工作人员到经理,而不是去代理。

解决scheme:将swarmpipe理器添加到docker守护进程NO_PROXY环境variables中,然后就可以开始了。 这个答案告诉你如何。