Kubernetes で Pod が起動しなくなり、node.kubernetes.io/disk-pressure の taint が原因になっていた時のメモです。ノードのディスクが逼迫すると、Kubernetes は Pod のスケジューリングや起動を止めることがあります。
この記事の位置づけ
この記事は、ノードのディスク不足によって Pod が起動しない場合の切り分け記事です。Kubernetes のスケジューリング問題としてだけでなく、ノード運用とストレージ管理の問題として確認します。
次に読む記事
参考
書籍
書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
出ていたメッセージ
0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/disk-pressure: }, that the pod didn't tolerate.原因
この時は、Pod 内のデータを毎日バックアップしており、そのバックアップデータでノード側のディスクが単純にいっぱいになっていました。アプリケーションや Kubernetes の設定不備というより、ノードの空き容量不足が直接の原因です。
確認すること
kubectl describe node <node-name>
kubectl get pod -A -o wide
df -h
sudo du -xh /var/lib/containerd | sort -h | tail
sudo du -xh /var/lib/kubelet | sort -h | tail復旧の考え方
- 不要なバックアップや一時ファイルを削除する。
- コンテナイメージや古いログが肥大化していないか確認する。
- 必要に応じて node を再起動する。
- バックアップ保存先を Pod / node のローカルディスクに置き続けない。
- 監視でディスク使用率を見て、disk-pressure になる前に気づけるようにする。
まとめ
disk-pressure は Kubernetes の問題というより、ノードのリソース不足が Kubernetes に表面化した状態です。Pod が起動しない時は、まず scheduler のエラー、node condition、ディスク使用量、container runtime の保存領域を確認します。
Kubernetes disk-pressure で Pod が起動しない場合



