解散现有集群
Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受Docker客户端发来的请求,调度适合的节点来运行容器,这就意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,放Swarm重新恢复运行之后,他会收集重建集群信息。很多用户是利用Swarm网络的跨容器通信功能而搭建docker swarm,不过要实现通过VPN的跨容器的访问,应指定VPN虚拟网卡来创建docker swarm。
如果swarm创建过程中有失语,需要推倒重来,可以解散集群。以下为完整过程
1、列出节点
首先是查看有多少节点:
docker node ls
这会更出节点所在的主机名,可根据这个找到相关节点
2、停止服务,包括portainer本身
删除节点前,最好还是先删除各种服务,从portainer的web进入查看并停掉所有容器服务。
另外,之前通过命令行部署的portainer服务(docker stack deploy -c portainer-agent-stack.yml portainer)并不能由portainer自身停掉,而是要用下面命令:
docker stack rm portainer
排空节点上的集群容器,如果容器不是通过portainer管理,或是还有一些容器在在集群上部署,用docker ps -a 查看,可以先停止容器,然后排空节点上的集群
docker node update –availability drain abc
3、删除节点
登陆到要删除的节点,然后docker swarm leave
此时如果用docker network查看,发现swarm的那个ingress网络也删除了
然后在manager上删除节点,此时,用docker node ls可以看到这个节点已经变成down了,可以docker node rm xyz ,id可以只用开头几个字符
4. 解散集群
在管理节点上 docker swarm leave –force