Docker -- resolve "join node timeout" error

在worker节点机器上通过docker swarm join 到 manger node时,报Timeout错误,如下:

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

 

在网上搜索了一下,找到了解决方案。我这边是因为 manager 与 worker 时间不同步造成的。

原文链接: https://my.oschina.net/u/3195712/blog/817314

 

解决方向:

方向一:本地时钟

       查看要组成集群的所有机器的本地时钟是否相同(大概相同即可,  差几秒不影响)

       输入指令:  date

        图中,第三个时间不同步

        修改第三个服务器的本地时钟:

    

     设置系统时间的操作:格式:date 月日时分年.秒

 

方向二:主机名 (hostname)

             在所有要组成集群的机器上输入:hostname  查看主机名

            

如果,主机名都为:localhost.localdomain,或者主机名都相同,则需要把所有的主机名修改的不一样,比如可以使用本机ip作为主机名

            

快速修改主机名的方法: 

输入: hostnamectl set-hostname <主机名>

 

方向三:防火墙

           CentOS7的防火墙为 firewalld

     最主要的是关闭manager机器的防火墙,其他worker机器的最好也关闭

     关闭指令:systemctl stop firewalld.service

     然后重启一下docker daemon: systemctl restart docker

 

   worker机器上测试2377端口是否通:

     1)在manager节点机器上先执行:

           docker swarm init --advertise-addr managerIP

                  (默认占用2377端口)

           用来激活2377端口

     2)在worker节点机器上执行:

           telnet managerIP 2377

       

       如果端口是通的,则可以进行docker swarm join 来将节点加入集群

posted @   TonyZhang24  阅读(1244)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示