如何刪除Docker Swarm中的Node




好吧,我又回來了。。。斷了那么久主要是因為懶。。。現在有空會更新一些docker相關的知識。

本文主要是總結下在工作中需要管理Docker Swarm中的Node遇到的問題:如何刪除一個Swarm中的Node。

    如何刪除Docker Swarm中的Node
        Docker node rm
        Docker node demote
        Docker swarm leave

先給出答案:
step1: 如果是master, docker node demote {node-id}
step2: docker node rm -f {node-id}

Docker的Cli給出了三個和刪除Node有關的命令:
docker node rm
docker node demote
docker swarm leave

這三個命令分別代表着什么?
Docker node rm

本質是調用SwarmKit(Swarmkit在Docker1.12后會打包在docker的發行版里,會啟動一個swarmkit的daemon進程監聽主機上的2377端口)的RemoveNode接口,swarmkit會在其raft store刪除這個Node的數據
Docker node demote

本質是調用SwarmKit的UpdateNode接口,把role從master改成worker
Docker swarm leave

    判斷還剩下的master數量是否是安全的,如果不是會報錯
    把當前的swarm node停止
    把當前node上所有的swarm mode啟動的container停止
    清除掉swarm保存在機器上的log文件
    把daemon設置成非swarm mode,並把attachment上的network刪掉

從實現原理來看,swarm leave== node demote + node rm
但是從測試結果發現,swarm leave后這個node就變成unreachable的狀態了。。。並不會從node列表中消失,因此,正確的刪除姿勢就是node demote -> node rm,雖然docker有的文檔中提到了swarm leave,
————————————————
版權聲明:本文為CSDN博主「MrTitan」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/MrTitan/article/details/56492313


免責聲明!

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



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