Что такое Evicted?

Evicted статус означает, что под был удален из узла из-за проблем с ресурсами или taints.

Причины возникновения

  • Превышение лимитов ресурсов
  • Несоответствие taints
  • Проблемы с garbage collection
  • Отсутствие достаточных ресурсов на узле

Как отладить ошибку

  1. Проверь логи пода - kubectl logs pod-name
  2. Опиши под - kubectl describe pod pod-name
  3. Проверь ресурсы - убедись в достаточности CPU и памяти
  4. Проверь health checks - убедись в правильности liveness/readiness проб

Как исправить ошибку

1. Исправь ошибки в приложении

1# Проверь логи для выявления ошибок
2kubectl logs pod-name
3
4# Если под перезапускается, используй предыдущие логи
5kubectl logs pod-name --previous
6
7# Для получения детальной информации
8kubectl describe pod pod-name

2. Настрой правильные ресурсы

 1apiVersion: v1
 2kind: Pod
 3metadata:
 4  name: my-app
 5spec:
 6  containers:
 7  - name: app
 8    image: my-app:latest
 9    resources:
10      requests:
11        memory: "64Mi"
12        cpu: "250m"
13      limits:
14        memory: "128Mi"
15        cpu: "500m"

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. Проверь переменные окружения

 1apiVersion: v1
 2kind: Pod
 3metadata:
 4  name: my-app
 5spec:
 6  containers:
 7  - name: app
 8    image: my-app:latest
 9    env:
10    - name: DATABASE_URL
11      value: "postgresql://user:pass@db:5432/mydb"
12    - name: NODE_ENV
13      value: "production"

Как мониторить подобные ошибки

  • Используй 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 пробы
  • Тестируй приложение локально перед деплоем