Docker Swarm删除节点
?
節(jié)點上的主機如果想離開的話,可以自己直接執(zhí)行docker swarm leave
然后你可以發(fā)現,原本跑在自己上面的容器被轉移到別的容器上了。此時如果在manager節(jié)點上docker node ls看的話,這個節(jié)點已經Down了。
?
然后訪問下這個節(jié)點的服務,也是理所當然的失敗
?
想加入回來就重新JOIN一下
?
但此時注意兩點,第一。對于manager來說之前的退出是Down狀態(tài),此時并沒有從節(jié)點里把這個退出的節(jié)點刪除,而我們有重新在節(jié)點上執(zhí)行JOIN。這個時候是新建立了一個node,所以上圖里面標注的兩個,上面那個Down是自己的Leave,下面的Ready是這次自己新加入的身份。并且此時直接訪問這個節(jié)點ip是沒有服務的。
?
分別登陸每個節(jié)點
?
可以看到,一共5個容器,manager跑2,work1節(jié)點跑3個,新加入的節(jié)點work2沒有跑。之后的新任務會被自動分給他的。如果著急測試,可以直接擴容類似這樣 docker service scale nginx=8 從5個直接擴到8個,新node馬上就會有活干了。
?
還有對于node節(jié)點自己leave之后,manager節(jié)點上看到的Down狀態(tài)的節(jié)點,如果不要了,可以直接
docker node rm xxxx 刪除
?
這樣就干凈了。
?
還有如果是manager節(jié)點想直接T某個節(jié)點出局怎么操作呢?
直接rm肯定會失敗(此時強行-f也行,不過不建議)
?
先docker node update --availability drain hxss1xiw0dh9ii6x1che9f3qk 讓這個node歇著去吧,此時再看下其他容器,會發(fā)現他的活都已經被分配給別人了。
?
上面是剩下干活的兩個節(jié)點,一人四個活。而剛剛被歇著這個容器空了。
?
然后可以嘗試刪除docker node rm xxxx刪除,但是還是失敗,因為雖然不分配任務給他,但是他的狀態(tài)不是Down所以不讓刪除,此時其實可以登錄到node上,直接自己主動leave。此時manager會看到是Down狀態(tài),不過也可以直接強行-f,因為此時任務已經被排空了。
如果強行-f了,此時要注意,就是現在對于節(jié)點node來說,自己還是在Join狀態(tài),如果此時你在node上執(zhí)行Join,她會說正在加入一個swarm,所以要先leave一下,再加入就OK了。
最后整理個小東西
?
?
總結
以上是生活随笔為你收集整理的Docker Swarm删除节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Swarm集群搭建
- 下一篇: Caddy-基于go的微型serve用来