十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

如何删除Docker Swarm中的Node

上一篇 / 下一篇  2018-09-23 17:08:33 / 个人分类:docker

文章来源
  • 文章来源:【转载】

step1: 如果是master, docker node demote {node-id} 51Testing软件测试网1g5AX w9C^-\m7P
step2: docker node rm -f {node-id}

0o$xX2j1J _b0

Docker的Cli给出了三个和删除Node有关的命令: 
r-r!t\Y'Tp0docker node rm  
m)j)Q&] Q0docker node demote 
!h,wbe.e,i q Tx0docker swarm leave51Testing软件测试网Blvr}A(Z0w

这三个命令分别代表着什么?

qJ3dJN$h&S:pl0

Docker node rm

本质是调用SwarmKit(Swarmkit在Docker1.12后会打包在docker的发行版里,会启动一个swarmkit的daemon进程监听主机上的2377端口)的RemoveNode接口,swarmkit会在其raft store删除这个Node的数据51Testing软件测试网 }&B'fd0KD$B

Docker node demote

本质是调用SwarmKit的UpdateNode接口,把role从master改成worker51Testing软件测试网 Q \+Gl-iI.\ C9y

Docker swarm leave


  • (?eD2t*x(z051Testing软件测试网L9S^0`&rkf"z#?

  • 判断还剩下的master数量是否是安全的,如果不是会报错51Testing软件测试网5J m:k y/lua z?#^i

  • 把当前的swarm node停止51Testing软件测试网(y}*bs/[%E.I%w xG

  • 把当前node上所有的swarm mode启动的container停止

    y5w2ys)J0
  • 清除掉swarm保存在机器上的log文件

    mIs&[ XH2T0
  • 把daemon设置成非swarm mode,并把attachment上的network删掉51Testing软件测试网Tpv]6h&|;{e^

    从实现原理来看,swarm leave== node demote + node rm 
    S/C.q4kbWJu,U0

    5u"Wm ~[(TzazQ0

但是从测试结果发现,swarm leave后这个node就变成unreachable的状态了。。。并不会从node列表中消失,因此,正确的删除姿势就是node demote -> node rm,虽然docker有的文档中提到了swarm leave,但其实并不正确51Testing软件测试网JODL\Z#On6{s

51Testing软件测试网6i$qT8x2?p.G

TAG: Docker docker

 

评分:0

我来说两句

Open Toolbar