1 问题概述
在利用Swarm管理Docker集群时,很容易安装Swarm并将节点链接起来。但是,在集群中试图运行容器时,发现没有“健康”(healthy)的节点,导致容器无法再集群中运行。使用docker -H 10.4.230.62:2376 info命令(10.4.230.62是manage节点的ip)查看集群的节点状态,输出类似下图的信息
可以看到节点的状态是pending的。这个问题在网上也有很多人遇到,但是没有一个综合性的靠谱的解决方式,经过很长时间的摸索和大神的指导,终于解决了这个问题,其中有几个“坑”需要注意一下。
2 监听端口
为了让 swarm manager 能够跟每台 swarm node 进行通信,集群中的每台节 点的 Docker daemon 都必须监听同一个网络接口。网上的通常做法是在/etc/default/docker文件中添加:DOCKER_OPTS="-H 0.0.0.0:2375 -H unix:///var/run/docker.sock" ,但是这种方式并没有起作用(可能是环境不同,本文使用的是centos 7系统),通过netstat命令可以查看端口情况,结果如下图所示