Docker Swarm无法创建Overlay Network及集群状态异常的重置方案求助
Docker Swarm无法创建Overlay Network及集群状态异常的重置方案求助
看起来你这是在反复调整Swarm节点角色的过程中,导致集群内部元数据出现了不一致的情况——虽然docker info和docker node ls都显示10.0.0.3是Leader Manager,但实际Swarm的Raft状态已经损坏,所以执行需要Manager权限的操作(比如创建overlay网络)时会报错。
最彻底的解决方法是完全重置所有节点的Swarm状态,从头开始搭建集群,步骤如下:
1. 强制退出所有节点的Swarm集群
不管节点当前是Manager还是Worker,都执行强制退出命令:
- 在10.0.0.3(原Leader)上:
docker swarm leave --force - 在10.0.0.10上:
docker swarm leave --force
2. 清理Swarm残留的状态文件(关键步骤)
仅执行swarm leave有时候无法彻底清除集群的元数据,需要手动删除Swarm的存储目录:
- 先停止Docker服务:
sudo systemctl stop docker - 删除Swarm的状态目录:
sudo rm -rf /var/lib/docker/swarm - 重启Docker服务:
sudo systemctl start docker
3. 重新初始化Swarm集群
回到10.0.0.3节点,重新初始化Swarm:
docker swarm init --advertise-addr 10.0.0.3
执行后会输出Worker和Manager的加入命令,把对应的token保存好。
4. 重新加入其他节点
根据你的需求,在10.0.0.10上执行对应的加入命令:
- 如果要作为Worker:使用输出的
docker swarm join --token <worker-token> 10.0.0.3:2377 - 如果要作为Manager:使用输出的
docker swarm join --token <manager-token> 10.0.0.3:2377
完成这些步骤后,你可以再次执行docker node ls和docker network create -d overlay db验证,应该就能正常创建overlay网络了。
额外说明
这种重置操作会清除所有Swarm相关的配置(包括已创建的网络、服务、节点信息),所以如果之前有重要的Swarm服务配置,记得提前备份。而你提到的非Swarm运行的容器不会受到影响,它们是独立于Swarm集群的。
备注:内容来源于stack exchange,提问作者Postie
相关产品推荐
相关产品推荐

