Docker节点重启无法加入swarm集群

Docker节点重启无法加入swarm集群

背景

docker swarm集群的某几个节点出现问题,需要重启这些节点的docker服务

错误操作

这几个节点都是worker节点

  1. 在物理机以root账户登录
  2. 执行systemctl restart docker
  3. 发现worker节点docker服务重启成功但是在manager执行docker node ls发现该节点状态处于Down
  4. worker节点执行docker swarm leave试图离开集群
  5. worker节点执行失败并报错:Error response from daemon: context deadline exceeded
  6. worker节点执行docker swarm leave -f,同样失败并返回相同的错误
  7. manager执行docker node rm xxxx删除这个Down的worker节点,然后worker节点leave集群,依旧失败
  8. worker节点执行docker swarm join企图重新加入集群,但是失败,报错说已经在集群中,需要先执行leave再join

错误操作导致的结果

集群能正常工作,但是少了一个节点。worker节点退不出集群,也加入不了集群,该节点对集群来说处于不可达不可用状态。

处理方法

在这种情况下,只能通过删除物理机上的swarm配置信息才能退出集群,然后再加入新集群。

  1. 先找到swarm的目录,一般情况是在/var/docker/swarm,但是如果安装docker更改了目录,就有可能不在这里,可以使用find -name "swarm"查找,记住该目录
  2. 然后关闭docker服务systemctl stop docker
  3. 使用rm -rf swarm目录删除这整个目录,当前节点的swarm信息就都没了
  4. 启动dockersystemctl start docker
  5. 在manager节点执行docker swarm join-token worker,来获取别的机器加入集群成为worker需要执行的命令,如果需要是成为manager,则把命令中的worker换成manager即可
  6. 在当前机器上执行第五步获取的命令即可加入swarm集群成功
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值