Docker Swarm刪除節點


 

節點上的主機如果想離開的話,可以自己直接執行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了。

最后整理個小東西

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM