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 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/