KubernetesのNodeのディスク使用率がどんどん上がっていく件
背景
Kubernetes(EKS)のNodeのディスク使用率がどんどん上がっていっているので原因を調べた
調査
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 1.3M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/nvme0n1p1 50G 32G 19G 63% / tmpfs 389M 0 389M 0% /run/user/1000
どのディレクトリが容量を食っているか調べると /var/lib/docker/overlay2
だった。
$ du -sch /var/lib/docker/* 16K /var/lib/docker/builder 56K /var/lib/docker/buildkit 502M /var/lib/docker/containers 102M /var/lib/docker/image 72K /var/lib/docker/network 33G /var/lib/docker/overlay2 0 /var/lib/docker/plugins 0 /var/lib/docker/runtimes 0 /var/lib/docker/swarm 0 /var/lib/docker/tmp 0 /var/lib/docker/trust 31M /var/lib/docker/volumes 34G total
/var/lib/docker/overlay2
とは?
- Dockerコンテナのファイル実体と肥大化する/var/lib/docker/overlay2の正体 #docker - クリエーションライン株式会社
- dockerで/var/lib/docker/overlay2 が肥大化した時の対処 - Tech Tips
- Dockerのoverlay2ディレクトリが肥大化してしまった | bassbone's blog
docker system df
で見てみると、過去のimageで容量を食っていることが分かる。24.76GBが削除可能な過去のimage
$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 94 12 27.07GB 24.76GB (91%) Containers 30 26 13.67MB 233.8kB (1%) Local Volumes 20 20 30.99MB 0B (0%) Build Cache 0 0 0B 0B
Garbage collection for container images | Kubernetes を読むと、 デフォルトでは、ディスク使用率が85%に達するとディスク使用率が80%になるまで不要なimageが削除される。
なので、放っておいてもディスク使用率が100%になることはない。
EKSを使っていて、85%というしきい値(--image-gc-high-threshold)を変えたい場合、以下の方法があるが面倒そう
https://aws.amazon.com/jp/premiumsupport/knowledge-center/eks-worker-nodes-image-cache/