首页 新闻 会员 周边 捐助

如何drain掉所有的Docker Swarm管理节点

0
[待解决问题]

在创建Docker Service的时候,如果不想在管理节点上运行副本,可以执行docker node update --availability drain <NODE-ID>,但是如果我有多个管理节点的话,难道要执行多次吗?有没有更好的办法?谢谢!

三大神捕之四的主页 三大神捕之四 | 初学一级 | 园豆:55
提问于:2018-03-10 17:43
< >
分享
所有回答(1)
0

如果把所有manager节点都drain,集群就挂掉了

dudu | 园豆:30778 (高人七级) | 2018-03-10 17:52

执行docker node update --availability drain <NODE-ID>

是将节点的availability由Active改成drain,阻止该节点从群管理器接收新任务,也就是不在运行副本,如果所有的管理节点都去执行这个操作的话,Swarm集群不会挂点。亲测过

支持(0) 反对(0) 三大神捕之四 | 园豆:55 (初学一级) | 2018-03-10 17:59

@毕殿卿: 那试试下面的命令

docker node update --availability drain $(docker node ls --format '{{.ID}}')
支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-03-10 18:30

@毕殿卿: 如果上面的命令无效,试试下面的命令

docker node ls --format '{{.ID}}' | xargs -L1 docker node update --availability drain
支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-03-10 18:46

@dudu: 两个命令都无效

支持(0) 反对(0) 三大神捕之四 | 园豆:55 (初学一级) | 2018-03-10 18:48

@毕殿卿: 我这里实测有效

$ docker node ls --format '{{.ID}}' | xargs -L1 docker node update --availability drain
zeiolgp0vcui2slhpsectc9jf
xwiv6nljo24nynm8n0byyqu82
bueuex4a7u6bjjjilntl0ft6s
支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2018-03-10 18:58

@dudu: 非常感谢 dudu 我是在https://labs.play-with-docker.com  搭建的Swarm集群,回头我再试试,非常感谢!

支持(0) 反对(0) 三大神捕之四 | 园豆:55 (初学一级) | 2018-03-10 19:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册