The node ran low on memory
Commonmemory.available fell below the threshold, 100Mi by default on Linux. Pods using more memory than they requested are evicted first, so a pod with a low or missing memory request goes early even when another pod caused the pressure.
Confirm
kubectl get pod <pod> -n <namespace> -o jsonpath='{.status.message}{"\n"}'The node was low on resource: memory, and the per-container lines showing usage against request
Fix
- Set memory requests close to real usage, so the scheduler does not overcommit the node and the pod is not first in line.
- For pods that must not be evicted for others, set memory requests equal to limits.
- Reserve memory for the operating system and the kubelet with system-reserved and kube-reserved, so pods cannot squeeze them.
- Add nodes or larger nodes if requests honestly exceed capacity.