ZeroLoom

ephemeral-storage のリソース不足が発生している場合の対応策

April 20, 2025
2 min read
Table of Contents

ディスク使用量の確認と不要なデータを削除


Kubernetes が表示している ephemeral-storageCapacity は、ノード全体のディスク容量に基づいている

実際のディスク使用量が高い場合、Kubernetes が「リソース不足」と判断することがある

ディスク使用量を確認
df -hT
不要なイメージの削除(docker)
docker system prune -af
不要なイメージの削除(containerd)
crictl rmi $(crictl images -q)
不要なログの削除
sudo du -sh /var/log
sudo rm -rf /var/log/*-old

Kubernetes の ephemeral-storage ポリシー設定の確認


Kubernetes のノードが ephemeral-storage のしきい値(evictionHard)に基づいて Pod をスケジューリングできない場合がある

nodefs.availableimagefs.available のしきい値が低すぎる場合(ディスク容量の 10% 未満が残っている)にエビクションが発生

Kubelet の設定を確認
cat /var/lib/kubelet/config.yaml
変更前
evictionHard:
  nodefs.available: "10%"
  imagefs.available: "15%"
変更後
evictionHard:
  nodefs.available: "5%"
  imagefs.available: "10%"
Kubelet を再起動
sudo systemctl restart kubelet

Pod にリソース要求を設定


Pod に対して ephemeral-storagerequestslimits を適切に設定していない場合、リソース管理が正しく行われない可能性がある

resources を Pod に設定
resources:
  requests:
   ephemeral-storage: "500Mi"
  limits:
   ephemeral-storage: "1Gi"

ノードの Taint と Toleration を確認


ノードに taint が設定されている場合、Pod がスケジュールされない可能性がある

ノードの Taint を確認
kubectl describe node <ノード>
出力例
Taints:
  node.kubernetes.io/ephemeral-storage-pressure:NoSchedule

taint が設定されている場合、toleration を Pod に追加してスケジュール可能にする

Toleration を Pod に追加
tolerations:
  - key: "node.kubernetes.io/ephemeral-storage-pressure"
    operator: "Exists"
    effect: "NoSchedule"

ストレージが圧迫されているコンポーネントを特定


kube-state-metrics 以外の Pod やシステムコンポーネントが大量の ephemeral-storage を使用している場合がある

現在のリソース消費を確認
kubectl describe nodes <ノード>

出力内にある Ephemeral Storage セクションを確認し、どのコンポーネントがリソースを消費しているか特定

消費量が多い Pod を確認
kubectl top pods --namespace <Namespace>