ディスク使用量の確認と不要なデータを削除
Kubernetes が表示している
ephemeral-storage
のCapacity
は、ノード全体のディスク容量に基づいている
実際のディスク使用量が高い場合、Kubernetes が「リソース不足」と判断することがある
df -hT
docker system prune -af
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.available
やimagefs.available
のしきい値が低すぎる場合(ディスク容量の 10% 未満が残っている)にエビクションが発生
cat /var/lib/kubelet/config.yaml
evictionHard:
nodefs.available: "10%"
imagefs.available: "15%"
evictionHard:
nodefs.available: "5%"
imagefs.available: "10%"
sudo systemctl restart kubelet
Pod にリソース要求を設定
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名>