[英]Docker Node is Down after service restart
我的服务器似乎空间不足,而且我在部署的一些 docker 堆栈方面遇到了一些问题。 我花了一段时间才弄明白,但最终我做到了并删除了几个容器和图像以释放一些空间。
我能够运行service docker restart
并且它起作用了。 但是,存在一些问题:
docker info
说 swarm 是“Pending”docker node ls
显示我拥有的唯一节点(Leader),它available
但已down
journalctl -f -u docker
说`level=error msg="错误删除任务" error="不兼容的值模块=node/agent/worker node.id=" 运行docker service ls
,所有服务都有0/1
副本。
这是运行docker node ls
时的状态
"Status": {
"State": "down",
"Message": "heartbeat failure for node in \"unknown\" state",
"Addr": "<ip and port>"
},
"ManagerStatus": {
"Leader": true,
"Reachability": "reachable",
"Addr": "<ip and port>"
}
如何让我的服务再次运行?
选项1:
等待。 有时它会自行修复。
选项 2(可能因操作系统而异):
systemctl stop docker
rm -Rf /var/lib/docker/swarm
systemctl start docker
docker swarm init
我找到了下一个解决方案https://forums.docker.com/t/docker-worker-nodes-shown-as-down-after-re-start/22329
docker服务重启后的Leader节点宕机了。
我通过将工作节点提升为管理节点,然后在新的管理节点上降级失败的领导节点来解决这个问题。
ubuntu@staging1:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Down Active Reachable
x68yyqtt0rogmabec552634mf staging2 Ready Active
ubuntu@staging1:~$ docker node promote staging2
root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
plxkuqqnkxotrzy7nhjj27w34 * staging1 Down Active Leader
x68yyqtt0rogmabec552634mf staging2 Ready Active Reachable
root@staging2:~# docker node demote staging1
root@staging2:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
plxkuqqnkxotrzy7nhjj27w34 staging1 Down Active
x68yyqtt0rogmabec552634mf * staging2 Ready Active Leader
root@staging2:~# docker node rm staging1
Get join-token from leader node:
root@staging2:~# docker swarm join-token manager
Reconnect failed node to docker swarm cluster:
root@staging1:~# docker swarm leave --force
root@staging1:~# systemctl stop docker
root@staging1:~# rm -rf /var/lib/docker/swarm/
root@staging1:~# systemctl start docker
root@staging1:~# docker swarm join --token XXXXXXXX 192.168.XX.XX:2377
root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Ready Active Reachable
x68yyqtt0rogmabec552634mf staging2 Ready Active Leader
root@staging1:~# docker node demote staging2
root@staging1:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
y0363og32cur9xq9yy0nqg6j9 * staging1 Ready Active Leader
x68yyqtt0rogmabec552634mf staging2 Ready Active
首先检查节点的详细信息:**
码头工人节点ls
** 如果节点的状态仍然显示关闭并且可用性处于活动状态,则可能是在节点上运行的服务停止。 将服务创建为全局模式
或者通过以下命令更新在 swarm 中运行的全局服务:
码头服务更新--force
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.