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