OOMKilled
The container used more memory than its limit and the kernel killed it. Confirm it, measure the real peak, then size the limit or fix the leak.
Troubleshooting guide · Evicted pods
An Evicted pod was stopped by the kubelet because its node ran short of memory, disk or process IDs. The kubelet evicts to protect the node, and it chooses first the pods using more than they requested. The pod's message names the resource and the numbers, and requests set to real usage are what keep a workload off the list.
Updated
Evicted pods are left behind as Failed pods:
kubectl get pods -A --field-selector=status.phase=Failed
The message names the resource: The node was low on resource: memory, followed by what the container used against its request:
kubectl describe pod <pod> -n <namespace>
The node's conditions — MemoryPressure, DiskPressure, PIDPressure — at the time and now:
kubectl describe node <node>
Evicted pods stay as Failed objects until the control plane's garbage collector removes them, and on most clusters that only happens after thousands have piled up. They use no resources, but they clutter every list:
Delete a namespace's Failed pods — including any failed Job pods you meant to keep for their logs:
kubectl delete pods -n <namespace> --field-selector=status.phase=Failed
In PodSteer
Read next
The container used more memory than its limit and the kernel killed it. Confirm it, measure the real peak, then size the limit or fix the leak.
The kubelet stopped reporting, or reported it cannot run pods. Its pods keep showing Running until they are evicted.
No node can take the pod. The scheduler's FailedScheduling event names every constraint that ruled a node out.