CI Runner "DiskPressure" / Evicted - Node Disk Exhaustion
A runner pod was evicted because its node hit DiskPressure. The kubelet enforces disk eviction thresholds, so when node disk (or inodes, or image storage) runs low, it evicts pods to reclaim space - taking the in-flight job with it.
What this error means
A self-hosted (Kubernetes-backed) runner job dies abruptly and the pod shows Evicted with reason The node was low on resource: ephemeral-storage or a DiskPressure node condition. Re-running, often on a different node, completes.
Status: Failed
Reason: Evicted
Message: The node was low on resource: ephemeral-storage. Threshold quantity: ...
# node condition: DiskPressure=TrueCommon causes
Node ephemeral storage / image disk ran low
Accumulated container images, layers, logs, and pod scratch on the node crossed the kubelet’s disk eviction threshold, triggering DiskPressure and pod eviction.
The job wrote more ephemeral storage than allowed
A pod exceeding its ephemeral-storage request/limit, or filling the node’s scratch, is evicted to protect the node.
How to fix it
Inspect node disk and eviction state
Confirm the eviction reason and the node’s disk condition.
kubectl describe node <node> | grep -A3 -i diskpressure
kubectl get events --field-selector reason=EvictedReclaim node disk or schedule elsewhere
- Prune unused images on the node (image garbage collection /
crictl rmi --prune). - Set realistic
ephemeral-storagerequests/limits so the scheduler places jobs on nodes with room. - Retry the job - eviction is transient and a healthier node usually completes it.
How to prevent it
- Enable aggressive image garbage collection on runner nodes.
- Set ephemeral-storage requests/limits for runner pods.
- Right-size node disk for the image and scratch footprint of CI jobs.