今天收到阿里云报警,通知磁盘空间快满了,于是进行检查清理。

第一步:清理 k8s日志

第二步:清理docker 镜像

docker image prune -a

第三步:检查磁盘空间发现作用并不大。

df -h

第四步:检查docker目录下的overlay目录大小

du -sh  –max-depth=1 /var/lib/docker

第五步:查找overlay2 相关的容器占用空间情况

cd /var/lib/docker/overlay2/

du -s ./* | sort -rn | more

我发现有一个占用100多个g的目录

第六步:根据目录id 查找对应的容器名称

docker ps -q | xargs docker inspect –format ‘{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}’ | grep 7832e723e7974656ef300d74738edeb9a65340dca66bca758c4cfa6e91429686

第七步:根据容器名称找到对应的容器的镜像,定位服务

docker ps |grep ${container_id/name}

第八步:进入容器查看情况

docker exec -it xxxx /bin/bash

我发先是容器里面的debug日志比较大,然后删除debug日志,问题得到解决

第九步:查看磁盘占用情况

ps:另外一种方案

1. ncdu -e /定位大文件。 界面中可以h获取帮助
2. for container in $(docker ps –all –quiet –format ‘{{ .Names }}’); do
echo “$(docker inspect $container –format ‘{{.GraphDriver.Data.MergedDir }}’ | \
grep -Po ‘^.+?(?=/merged)’ ) = $container”
done 获取id与容器的对应

 

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注