Ethan's Notes

Kubelet eviction thresholds, explained once

evictionHard is a floor, not a target. When nodefs.available drops below it the kubelet starts evicting pods immediately and does not wait for the image garbage collector, which has its own thresholds (imageGCHighThresholdPercent) and runs on its own schedule.

evictionHard:
  nodefs.available: "10%"
  imagefs.available: "15%"
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80

If your nodes hover around 85% disk, image GC and eviction end up fighting each other. Give them a gap of at least ten points.