记一次误删引发的服务雪崩
K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除
删除后,有状态服务先出现了问题,服务无法启动、停止、删除。
对节点进行重启后,无状态服务集体雪崩…
报错信息如图:
解决方法:
# 缓存镜像层的问题,要清除缓存镜像层
docker system prune -a
-
分析:docker容器将容器缓存放在了overlay2这个目录下,保存着当前服务的状态等资源。将目录删除后,容器默认会先去查状态,然后再进行销毁、重启等操作。这时候,找不到目录,就停在了这里。
-
建议: 清理docker内存,使用docker删除镜像的命令,除非删除挂载卷备份文件,其他不要使用rm去找文件。
在生产环境不建议这么使用,因为它会删除所有未使用的数据,包括:
- 所有停止的容器
- 所有未使用的网络
- 所有悬空的镜像(即不被任何容器引用的镜像)
- 所有未使用的构建缓存
这种操作可能会导致丢失一些有用的数据,特别是如果你不小心删除了一些你还需要的镜像或容器。为了避免这种风险,你可以使用下面这些替代方法来选择性地清理 Docker 资源:
清理未使用的容器:
docker container prune
清理未使用的镜像:
docker image prune
清理未使用的网络:
docker network prune
清理构建缓存:
docker builder prune