💥

Pod OOMKilled — out of memory

Container killed by kernel OOM — fix limits, leaks, or node pressure.

Reviewed: ·Tested on: Kubernetes 1.29, Terraform 1.8, Ubuntu 22.04

Symptoms

  • Reason: OOMKilled in kubectl describe pod
  • Container restarts with exit code 137
  • App slow then pod dies under load

1Confirm OOM and which container

kubectl describe pod <pod> -n <ns> | grep -A5 "Last State"
kubectl get pod <pod> -n <ns> -o jsonpath='{.status.containerStatuses[*].lastState.terminated.reason}'
kubectl top pod <pod> -n <ns> 2>/dev/null || echo "metrics-server needed"

2Check limits vs usage

If memory limit equals request and app spikes, raise limit or fix leak. If no limits, set requests/limits to avoid node-wide OOM.

kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.containers[*].resources}'
kubectl top pods -n <ns> --sort-by=memory | head -10

3Node-level memory pressure

kubectl describe node <node> | grep -A10 Conditions
kubectl get events -n <ns> --field-selector reason=OOMKilling

4Mitigate and redeploy

# patch higher memory limit (example)
kubectl set resources deploy/<name> -n <ns> --limits=memory=512Mi --requests=memory=256Mi
kubectl rollout status deploy/<name> -n <ns>

Related