Chapter 3 解决Swarm管理Docker集群节点状态一直pending的问题
2016-11-05 00:53
981 查看
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命令可以查看端口情况,结果如下图所示可以发现并没有2375端口的输出信息,表示这个监听端口并没有起来。
换一种方式配置监听端口,通过在/etc/systemd/system/docker/service.d文件中添加:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock(替换原来的ExecStart=)。
重启docker,出现下图提示
按照提示输入: systemctl daemon-reload,出现下列的错误信息
按照提示输入systemctl status docker.service,输出下列的提示信息
这个错误信息在网上也没有一个明确的解决方案,后来经过大神提点可能是docker安装的有问题。
3 在centos上安装Docker
这里的实验环境是centos 7,按照官网(https://docs.docker.com/engine/installation/linux/centos/)的方式安装Docker
3.1 卸载原有的Docker
查看安装列表[root@docker0 ~]# yum list installed | grep docker
docker.x86_64 1.10.3-46.el7.centos.14 @extras
docker-common.x86_64 1.10.3-46.el7.centos.14 @extras
docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras
卸载
[root@docker ~]# yum -y remove docker.x86_64 docker-common.x86_64 docker-selinux.x86_64
3.2 重新安装
更新yum源:sudo yum update添加
yumrepo:sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF
安装Docker:sudo yum install docker-engine
启动Docker服务: sudo systemctl enable docker.service
启动 Docker daemon:serivce docker restart
4 防火墙问题
在重载Docker以后,发现2375端口可以起来了,如下图所示重新安装swarm以后,搭建集群以后,不幸的是,节点的状态还是pending
又捣鼓了很久,终于在网上看到一条提示说可能是防火墙的原因,可以通过:iptables -F指令来暂停防火墙(不过这个命令据说要十分小心),终于解决了困扰很久的问题,通过:docker -H 10.4.230.62:2376 info指令查看节点状态,可以看到下面的提示
节点的状态终于变成Healthy了,那么接着就可以发布和运行容器了
相关文章推荐
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
- 非节点主机通过内网远程管理docker swarm集群
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
- Chapter 2 Swarm管理Docker集群
- 【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
- Docker-swarm 集群部署及swarm集群管理节点的高可用配置
- 30天了解30种技术系列(14)----Docker集群管理利器Swarm
- Docker集群管理(三)—— docker swarm mode基础教程
- Windows7启动时网络状态图标一直转圈的问题解决
- 阿里云:重启 manager 节点引发 docker swarm 集群宕机
- 集群管理——开机B7问题(内存条ERROR),caffe编译matlab接口错误解决方法
- 使用fabric解决百度BMR的spark集群各节点的部署问题
- 集群管理——(4)开机分辨率问题,opencv编译符号链接错误解决
- 解决编译ROS节点时出现的问题 Error: package 'chapter2_tutorials' not found
- 记hadoop集群黑名单移除节点出现问题及解决
- CRS-0184: Cannot communicate with the CRS daemon.之节点脱离集群问题解决
- [SharePoint 2007]如何解决上传InfoPath表单时一直处于正在安装状态的问题
- 解决marathon上docker实例一直waitting的问题
- Docker Swarm 集群创建+Portainer 图形化管理实验
- 关于flume采集,这个问题一直无法解决,不知道是hadoop集群的问题还是,flume的问题