记一次误删引发的服务雪崩

K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除
 
删除后,有状态服务先出现了问题,服务无法启动、停止、删除。
 
对节点进行重启后,无状态服务集体雪崩…

报错信息如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPfXzO8D-1645007926536)(https://gts-workorder.oss-cn-beijing.aliyuncs.com/20220215/d93d2d90-acf0-43d3-8f10-320f6322b5f3/image.png?Expires=1645608039&OSSAccessKeyId=LTAI4FrZPa9N1nGWs6Nykp3A&Signature=hkRj%2BsVi%2BNP%2FOa6NDkomQRGz0No%3D)]

解决方法:
# 缓存镜像层的问题,要清除缓存镜像层
docker system prune -a
  • 分析:docker容器将容器缓存放在了overlay2这个目录下,保存着当前服务的状态等资源。将目录删除后,容器默认会先去查状态,然后再进行销毁、重启等操作。这时候,找不到目录,就停在了这里。

  • 建议: 清理docker内存,使用docker删除镜像的命令,除非删除挂载卷备份文件,其他不要使用rm去找文件。

在生产环境不建议这么使用,因为它会删除所有未使用的数据,包括:

  • 所有停止的容器
  • 所有未使用的网络
  • 所有悬空的镜像(即不被任何容器引用的镜像)
  • 所有未使用的构建缓存

这种操作可能会导致丢失一些有用的数据,特别是如果你不小心删除了一些你还需要的镜像或容器。为了避免这种风险,你可以使用下面这些替代方法来选择性地清理 Docker 资源:

清理未使用的容器:

docker container prune

清理未使用的镜像:

docker image prune

清理未使用的网络:

docker network prune

清理构建缓存:

docker builder prune
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐