低版本kubernetes节点卡死重置恢复方法

建议方案

彻底清理(强制删除所有容器/进程),建议使用此方法,kubelet重启后会自动重启拉起节点上的容器。

1. 先停止所有运行中的容器

bash 复制代码
docker stop $(docker ps -q)

2. 再删除所有容器(包括停止+运行)

bash 复制代码
docker rm $(docker ps -a -q)

3. 重启docker kubelet

bash 复制代码
systemctl restart docker && systemctl restart kubelet

兜底方案(非必要不使用)

一旦出现这种情况:

bash 复制代码
[root@master01 docker]# rm -rf containers/ overlay2/
rm: cannot remove 'containers/xxx/mounts/shm': Device or resource busy

merged 是容器运行时挂载点,被内核挂载占用,直接强删目录必报错

bash 复制代码
# 强制卸载所有挂载占用
umount -lf /var/lib/docker/containers/*/mounts/shm
umount -lf /var/lib/docker/overlay2/*/merged

# 批量强制卸载所有 kubelet 挂载(推荐)
mount | grep kubelet | awk '{print $3}' | xargs -I {} umount -l {}

# 杀死残留 shim 与 runc 僵尸进程
ps -ef | grep -E 'containerd-shim|runc' | grep -v grep | awk '{print $2}' | xargs kill -9

然后重启

bash 复制代码
systemctl restart docker && systemctl restart kubelet

使用兜底方案的特征

当出现如下日志核心异常点:

1. 致命问题:大量 containerd-shim 僵尸残留进程

arduino 复制代码
docker.service: Unit process xxx (containerd-shim) remains running after unit stopped.
This usually indicates unclean termination of a previous run

Docker 正常 stop 时无法回收容器 Shim 进程,大量残留僵尸进程占用 CRI 链路、命名空间、网络栈。

直接后果: docker 重启后资源锁不释放、容器操作阻塞、kubelet 调用 CRI 超时 → 容器运行时检测失败 → 节点 NotReady

2. Docker 内部元数据并发锁冲突(关键卡死点)

vbnet 复制代码
Error (Unable to complete atomic operation, key modified) deleting object [endpoint ...] retrying....

Docker 网络 endpoint/对象数据库原子操作失败、锁竞争 ,反复重试无法释放网络资源。 你的集群频繁创建/销毁 Pod、Calico 网络回收,叠加 ARM64 + Docker23.0.6 兼容性问题,网络层死锁

3. 持续 shim 断开清理告警

erlang 复制代码
cleaning up after shim disconnected

4. docker卡死

bash 复制代码
KubeletNotReady container runtime status check may not have completed yet

或者

bash 复制代码
Skipping pod synchronization err="container runtime status check failed"

或者

bash 复制代码
Ready: False KubeletNotReady: PLEG is not healthy: pleg was last seen active 3m27s ago; threshold is 3m0s

kubelet日志查看

bash 复制代码
journalctl -u kubelet --no-pager
相关推荐
IT_陈寒4 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
淇奥74 小时前
【MyBatis-Plus】MyBatis-Plus 学习笔记
后端
_code_bear_5 小时前
OpenSpec CLI 与 OPSX 工作流说明
前端·后端·架构
用户8356290780515 小时前
使用 Python 在 PowerPoint 中添加并控制音频播放
后端·python
用户8356290780515 小时前
使用 Python 在 PowerPoint 中生成并自定义饼图与环形图
后端·python
念何架构之路5 小时前
Go语言常见并发模式
开发语言·后端·golang
Cosolar5 小时前
大模型应用开发面试 • 第4期|A2A、复杂挑战与具身智能
人工智能·后端·面试
迷渡6 小时前
聊一聊 Bun 用 Rust 重写这件事
开发语言·后端·rust
王中阳Go6 小时前
秒杀、分库分表、全链路追踪:一个电商微服务的架构全拆解
后端·go
正儿八经的少年6 小时前
Spring Boot 两种激活配置方式的作用与区别
java·spring boot·后端