🧭 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
- Confirm the reason. Look for Last State: Terminated, Reason: OOMKilled.
kubectl describe pod <pod> -n <namespace>
- Read the memory limit. Find resources.limits.memory.
kubectl get pod <pod> -n <namespace> -o yaml
- 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.