Что такое Evicted?
Evicted статус означает, что под был удален из узла из-за проблем с ресурсами или taints.
Причины возникновения
- Превышение лимитов ресурсов
- Несоответствие taints
- Проблемы с garbage collection
- Отсутствие достаточных ресурсов на узле
Как отладить ошибку
- Проверь логи пода -
kubectl logs pod-name
- Опиши под -
kubectl describe pod pod-name
- Проверь ресурсы - убедись в достаточности CPU и памяти
- Проверь health checks - убедись в правильности liveness/readiness проб
Как исправить ошибку
1. Исправь ошибки в приложении
2. Настрой правильные ресурсы
3. Исправь health checks
1apiVersion: v1
2kind: Pod
3metadata:
4 name: my-app
5spec:
6 containers:
7 - name: app
8 image: my-app:latest
9 livenessProbe:
10 httpGet:
11 path: /health
12 port: 8080
13 initialDelaySeconds: 30
14 periodSeconds: 10
15 readinessProbe:
16 httpGet:
17 path: /ready
18 port: 8080
19 initialDelaySeconds: 5
20 periodSeconds: 5
4. Проверь переменные окружения
Как мониторить подобные ошибки
- Используй Prometheus и Grafana для мониторинга
- Настрой алерты на CrashLoopBackOff
- Логируй все ошибки приложений
- Используй Kubernetes Events для отслеживания
FAQ
В: Как отличить CrashLoopBackOff от ImagePullBackOff?
О: CrashLoopBackOff возникает после успешного запуска контейнера, а ImagePullBackOff - при проблемах с загрузкой образа.
В: Что делать, если под не может подключиться к базе данных?
О: Проверь Service и Endpoints, убедись в правильности DNS имен и портов.
В: Как отладить проблемы с ConfigMap/Secret?
О: Используй kubectl describe pod
для проверки монтирования и kubectl get configmap/secret
.
Лучшие практики
- Всегда добавляй health checks
- Устанавливай разумные лимиты ресурсов
- Логируй ошибки приложения
- Используй readiness и liveness пробы
- Тестируй приложение локально перед деплоем