失败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
从官方文档更容易:
-
重新启动swarmpipe理器:
- 用
docker swarm leave --force
取下群 - 重新
docker swarm init --advertise-addr [ip of the machine, check it with 'docker-machine ls']:2377
(2377
是swarm连接的端口 )
- 用
-
然后使用
docker-machine ssh myvm2 "docker swarm join \ --token <token> \ <ip>:<port>"
将您的机器添加到群集中
正如其他人所指出的,封港可能是其中一个原因。 但是我也发现了更多。
最近版本的Docker正遭受着巨大的代理问题:
- https://github.com/moby/moby/issues/34825
- https://github.com/moby/moby/issues/34996
- https://github.com/moby/moby/issues/35046
- https://github.com/moby/moby/issues/35395
根据这个评论 ,这个修复“很可能”成为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-ce
和17.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中,然后就可以开始了。 这个答案告诉你如何。
- Jenkinsfile无法运行多个参数的docker
- 使用环境API密钥调用控制台应用程序容器的Rancher API调用
- docker工人ps -a没有显示我的容器
- 我应该如何将敏感环境variables传递给Amazon ECS任务?
- 无法使用docker文件部署war jboss / wildfly
- Docker中的Clickhouse选项是experimental_allow_extended_storage_definition_syntax
- 在节点上安装Docker DTR需要什么条件,我如何testing它们?
- 泊坞窗容器与火花stream应用程序不能绑定到本地主机(容器)端口
- 如何访问docker容器中的文件已经退出?