ディスク使用量の確認と不要なデータを削除
Kubernetes が表示している
ephemeral-storageのCapacityは、ノード全体のディスク容量に基づいている
実際のディスク使用量が高い場合、Kubernetes が「リソース不足」と判断することがある
df -hTdocker system prune -afcrictl rmi $(crictl images -q)sudo du -sh /var/log
sudo rm -rf /var/log/*-oldKubernetes の ephemeral-storage ポリシー設定の確認
Kubernetes のノードが
ephemeral-storageのしきい値(evictionHard)に基づいて Pod をスケジューリングできない場合がある
nodefs.availableやimagefs.availableのしきい値が低すぎる場合(ディスク容量の 10% 未満が残っている)にエビクションが発生
cat /var/lib/kubelet/config.yamlevictionHard:
nodefs.available: "10%"
imagefs.available: "15%"evictionHard:
nodefs.available: "5%"
imagefs.available: "10%"sudo systemctl restart kubeletPod にリソース要求を設定
Pod に対して
ephemeral-storageのrequestsとlimitsを適切に設定していない場合、リソース管理が正しく行われない可能性がある
resources:
requests:
ephemeral-storage: "500Mi"
limits:
ephemeral-storage: "1Gi"ノードの Taint と Toleration を確認
ノードに
taintが設定されている場合、Pod がスケジュールされない可能性がある
kubectl describe node <ノード名>Taints:
node.kubernetes.io/ephemeral-storage-pressure:NoSchedule
taintが設定されている場合、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セクションを確認し、どのコンポーネントがリソースを消費しているか特定
kubectl top pods --namespace <Namespace名>