容器数据磁盘被写满造成的危害:
判断是否被写满:
容器数据目录大多会单独挂数据盘,路径一般是 /var/lib/docker
,也可能是 /data/docker
或 /opt/docker
,取决于节点被添加时的配置:
可通过 docker info
确定:
$ docker info
...
Docker Root Dir: /var/lib/docker
...
如果没有单独挂数据盘,则会使用系统盘存储。判断是否被写满:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/vda1 51474044 4619112 44233548 10% /
...
/dev/vdb 20511356 20511356 0 100% /var/lib/docker
重启 dockerd (清理容器日志输出和可写层文件)
$ cd /var/lib/docker/containers
$ du -sh * # 找到比较大的目录
$ cd dda02c9a7491fa797ab730c1568ba06cba74cecd4e4a82e9d90d00fa11de743c
$ cat /dev/null > dda02c9a7491fa797ab730c1568ba06cba74cecd4e4a82e9d90d00fa11de743c-json.log.9 # 删除log文件
注意: 使用 cat /dev/null >
方式删除而不用 rm
,因为用 rm 删除的文件,docker 进程可能不会释放文件,空间也就不会释放;log 的后缀数字越大表示越久远,先删除旧日志。
kubectl drain 10.179.80.31
systemctl restart dockerd
kubectl uncordon 10.179.80.31
问题定位方法见附录,这里列举根因对应的解决方法:
$ docker system df -v
进入容器数据目录(假设是 /var/lib/docker
,并且存储驱动是 aufs):
$ cd /var/lib/docker
$ du -sh *
containers
目录: 体积大说明日志输出量大aufs
目录diff
子目录: 容器可写层,体积大说明可写层数据量大(程序在容器里写入文件)mnt
子目录: 联合挂载点,内容为容器里看到的内容,即包含镜像本身内容以及可写层内容TKE 的 pod 中每个容器输出的日志最大存储 1G (日志轮转,最大10个文件,每个文件最大100m,可用 docker inpect
查看):
$ docker inspect fef835ebfc88
[
{
...
"HostConfig": {
...
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "10",
"max-size": "100m"
}
},
...
查看哪些容器日志输出量大:
$ cd /var/lib/docker/containers
$ du -sh *
目录名即为容器id,使用前几位与 docker ps
结果匹配可找出对应容器,最后就可以推算出是哪些 pod 搞的鬼
可写层的数据主要是容器内程序自身写入的,无法控制大小,可写层越大说明容器写入的文件越多或越大,通常是容器内程序将log写到文件里了,查看一下哪个容器的可写层数据量大:
$ cd /var/lib/docker/aufs/diff
$ du -sh *
通过可写层目录(diff
的子目录)反查容器id:
$ grep 834d97500892f56b24c6e63ffd4e520fc29c6c0d809a3472055116f59fb1d2be /var/lib/docker/image/aufs/layerdb/mounts/*/mount-id
/var/lib/docker/image/aufs/layerdb/mounts/eb76fcd31dfbe5fc949b67e4ad717e002847d15334791715ff7d96bb2c8785f9/mount-id:834d97500892f56b24c6e63ffd4e520fc29c6c0d809a3472055116f59fb1d2be
mounts
后面一级的id即为容器id: eb76fcd31dfbe5fc949b67e4ad717e002847d15334791715ff7d96bb2c8785f9
,使用前几位与 docker ps
结果匹配可找出对应容器,最后就可以推算出是哪些 pod 搞的鬼
看看哪些镜像比较占空间
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有