zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Docker Swarm删除节点

Docker节点 删除 Swarm
2023-09-11 14:14:01 时间

 

节点上的主机如果想离开的话,可以自己直接执行docker swarm leave

然后你可以发现,原本跑在自己上面的容器被转移到别的容器上了。此时如果在manager节点上docker node ls看的话,这个节点已经Down了。

 

然后访问下这个节点的服务,也是理所当然的失败

 

想加入回来就重新JOIN一下

 

但此时注意两点,第一。对于manager来说之前的退出是Down状态,此时并没有从节点里把这个退出的节点删除,而我们有重新在节点上执行JOIN。这个时候是新建立了一个node,所以上图里面标注的两个,上面那个Down是自己的Leave,下面的Ready是这次自己新加入的身份。并且此时直接访问这个节点ip是没有服务的。

 

分别登陆每个节点

 

可以看到,一共5个容器,manager跑2,work1节点跑3个,新加入的节点work2没有跑。之后的新任务会被自动分给他的。如果着急测试,可以直接扩容类似这样 docker service scale nginx=8 从5个直接扩到8个,新node马上就会有活干了。

 

还有对于node节点自己leave之后,manager节点上看到的Down状态的节点,如果不要了,可以直接

docker node rm xxxx 删除

 

这样就干净了。

 

还有如果是manager节点想直接T某个节点出局怎么操作呢?

直接rm肯定会失败(此时强行-f也行,不过不建议)

 

先docker node update --availability drain hxss1xiw0dh9ii6x1che9f3qk 让这个node歇着去吧,此时再看下其他容器,会发现他的活都已经被分配给别人了。

 

上面是剩下干活的两个节点,一人四个活。而刚刚被歇着这个容器空了。

 

然后可以尝试删除docker node rm xxxx删除,但是还是失败,因为虽然不分配任务给他,但是他的状态不是Down所以不让删除,此时其实可以登录到node上,直接自己主动leave。此时manager会看到是Down状态,不过也可以直接强行-f,因为此时任务已经被排空了。

如果强行-f了,此时要注意,就是现在对于节点node来说,自己还是在Join状态,如果此时你在node上执行Join,她会说正在加入一个swarm,所以要先leave一下,再加入就OK了。

最后整理个小东西