English version

KubeContainerOomKilled: что делать при алерте

Правило алерта

alert: KubeContainerOomKilled
expr: kube_pod_container_status_last_terminated_reason{reason="OOMKilled"} == 1
and on (namespace, pod, container)
increase(kube_pod_container_status_restarts_total[10m]) > 0
for: 0m
severity: warning

Сообщение алерта: Контейнер {{ $labels.container }} убит по OOM ({{ $labels.namespace }}/{{ $labels.pod }})

Что значит

Контейнер был перезапущен, и причиной последнего завершения стал OOMKilled: процесс превысил лимит памяти (resources.limits.memory). Алерт активен, пока в течение 10 минут был рост счётчика перезапусков.

Частые причины

Слишком низкий лимит, утечка памяти, пиковая нагрузка, настройки runtime (JVM heap, Node.js) выше лимита контейнера.

Диагностика

kubectl -n <ns> describe pod <pod>              # Last State: Terminated, Reason: OOMKilled
kubectl -n <ns> top pod <pod> --containers
kubectl -n <ns> get pod <pod> -o jsonpath='{.spec.containers[*].resources}'
kubectl -n <ns> logs <pod> -c <контейнер> --previous

Как исправить

Увеличить лимит памяти, привести настройки приложения к лимиту, найти утечку. Сохраняйте разумную разницу между requests и limits.

Когда можно заглушить

Для тестовых и пакетных задач, где OOM ожидаем.

Похожие алерты

Весь набор из 44 протестированных правил + Alertmanager → Telegram: 790 ₽
Открыть в Telegram · Бесплатный набор Monitoring Lite · Все алерты runbook