IK.AM


Dev > CaaS > Kubernetes

Kubernetesのノードのディスク使用量を減らすメモ

Created on Fri May 10 2024 • Last Updated on Fri May 10 2024N/A Views

🏷️ Kubernetes | containerd | nerdctl

NodeがDisk Fullになったため、使用量を減らす作業メモ。具体的には、使っていないコンテナイメージを削除したい。

kubectl debugコマンドでNodeにアクセスします。

kubectl debug node/<node_name> -it --image=busybox

chrootで、ノードセッションとのinteractionを開始します。

chroot /host

ディスクサイズを確認します。100%使用になっていますね。

$ df -h | head -3
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/vda2                                  150G  148G     0 100% /
tmpfs                                      3.9G     0  3.9G   0% /dev/shm

Node上で、containerdに対するdocker CLIとしてnerdctlをインストールします。

cd /tmp
wget https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-1.7.6-linux-amd64.tar.gz
tar xzvf nerdctl-1.7.6-linux-amd64.tar.gz 
mv nerdctl /usr/local/bin/

nerdctl versionを実行してcontainerdのサーバーにアクセスできることを確認します。

$ nerdctl version
WARN[0000] unable to determine buildctl version: exec: "buildctl": executable file not found in $PATH 
Client:
 Version:   v1.7.6
 OS/Arch:   linux/amd64
 Git commit:    845e989f69d25b420ae325fedc8e70186243fd93
 buildctl:
  Version:  

Server:
 containerd:
  Version:  v1.7.13
  GitCommit:    7c3aca7a610df76212171d200ca3811ff6096eb8
 runc:
  Version:  1.1.12
  GitCommit:    v1.1.12-0-g51d5e946

Node上に溜まっているコンテナイメージを確認します。

nerdctl --namespace k8s.io images

使っていないイメージがディスクを圧迫しているでしょう。

次のコマンドで全イメージを削除します。起動中で使用されているコンテナイメージに関しては削除はできませんので、使われていないイメージが全削除されます。

nerdctl --namespace k8s.io images | awk '{print $3}' | sort | uniq | xargs nerdctl --namespace k8s.io rmi -f

ディスクが使用量が少し回復しました。

$ df -h  | head -3 
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/vda2                                  150G  117G   27G  82% /
tmpfs                                      3.9G     0  3.9G   0% /dev/shm

exitを2回実行して終了します。

$ kubectl get pod                                               
NAME                                          READY   STATUS      RESTARTS   AGE
node-debugger-kiwi-build-0e46b92bc3b6-nvpg5   0/1     Completed   0          8m7s

debug用のpodはCompletedの状態で残っているので、不要であれば削除して構いません。

Found a mistake? Update the entry.