首页新闻找找看学习计划

重建 docker swarm 集群时出现 Error response from daemon: context deadline exceeded

1
悬赏园豆:10 [已解决问题] 解决于 2019-04-23 08:40

有两台服务器组成的 docker swarm 集群,其中一台 worker 节点无法正常工作,状态为down,重启也无法解决问题,于是将这台 worker 节点docker swarm leave下线,但是长时间没有响应,系统卡死,无奈之下,在另一台 manger 节点上docker node rm [worker_node] 删除了这个 worker 节点,这时候 worker 节点输出如下错误:

Error response from daemon: context deadline exceeded

根据 docker swarm 的官方文档,强制新建集群docker swarm init --force-new-cluster --advertise-addr node01:2377, 但是 worker 节点还是无法加入 docker swarm join --token token [ip]:2377,没有任何响应。

请问该如何解决这个问题?

蝌蝌的主页 蝌蝌 | 初学一级 | 园豆:158
提问于:2019-04-22 21:24
< >
分享
最佳答案
1

如果这个 worker 节点没有通过 docker swarm leave 正常下线,也不能恢复到正常工作状态,只能从头重建集群。

为什么要从头重建集群?因为集群保存着错误的配置数据,故障 worker 节点已无法正常工作,但集群还误以为它可以正常工作。docker swarm init --force-new-cluster 是在保留配置数据的情况下重建集群,而问题恰恰就在配置数据,所以用它于事无补。docker swarm 也没有提供手工删除错误配置数据的方法。

docker node rm [worker_node] 是用于在节点 leave 之后进行移除操作。

收获园豆:10
dudu | 高人七级 |园豆:38642 | 2019-04-22 22:01

重建集群,先把 manger 节点docker swarm leave --force清除所有状态,但是这个 worker 节点已经成为了孤儿,docker swarm leave --force也不行,那么是不是要卸载 docker 才行?

蝌蝌 | 园豆:158 (初学一级) | 2019-04-22 22:50

@蝌蝌: worker 节点 docker swarm leave --force 应该可以的,建议再试试

dudu | 园豆:38642 (高人七级) | 2019-04-22 23:08

@dudu: 真是奇怪,昨天怎么试了好多次都不行,现在居然可以了。

蝌蝌 | 园豆:158 (初学一级) | 2019-04-23 08:05
其他回答(1)
1

我之前也遇到swarm 节点一直卡在down的状态下

你尝试

ll /var/lib/docker/swarm/worker/tasks.db 

查看该节点的tasks.db 如果异常的大,将它删除,再重启节点。

Shendu.CC | 园豆:1791 (小虾三级) | 2019-04-23 09:05

多大才是异常的大?

支持(0) 反对(0) 蝌蝌 | 园豆:158 (初学一级) | 2019-04-23 10:56

@蝌蝌: 我遇到的是大小400多兆,删除了就正常了。

支持(0) 反对(0) Shendu.CC | 园豆:1791 (小虾三级) | 2019-04-23 11:11

你可以在正常节点下,执行命令,看下大小是多大,就知道是不是异常的了。

支持(0) 反对(0) Shendu.CC | 园豆:1791 (小虾三级) | 2019-04-23 11:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册