Skip to main content

🧭 Why is my pod OOMKilled?

OOMKilled: the container went over its memory limit and was stopped. Either the limit is too low or the app leaks.

🔎 Check it by hand​

  1. Confirm the reason. Look for Last State: Terminated, Reason: OOMKilled.
kubectl describe pod <pod> -n <namespace>
  1. Read the memory limit. Find resources.limits.memory.
kubectl get pod <pod> -n <namespace> -o yaml
  1. Check current usage (optional). This needs metrics-server installed in the cluster.
kubectl top pod -n <namespace>

🎯 What kwatch sends​

The message reads like this.

Example message​

🟠 api in shop (prod-eu-1) keeps running out of memory. Its registry is healthy and unchanged, so nothing outside it explains this. It was killed at its 512Mi memory limit; it used 470Mi at peak in the last 24 hours. Its last run lasted 1h59m; 4 restarts in the 1h1m since its pod was created. Fix in: deployment/api → container app → resources.limits.memory (512Mi). To read the output of the last crash, run kubectl logs api-d461a92b-a -c app -n shop --previous

⭐ Which edition​

Community includes OOM detection and the root-cause headline. Pro adds log excerpts and the full proof.

🚀 Install kwatch​

One command, and it walks you through it.

/bin/bash -c "$(curl -fsSL https://kwatch.dev/kwatch.sh)"

Community is free forever; Pro is free during early access. See Installation and Community vs Pro.