Что такое состояние Pending?

Состояние Pending означает, что под был создан, но еще не назначен на узел кластера.

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

  • Недостаточно ресурсов на узлах
  • Проблемы с PersistentVolumeClaim
  • Конфликтующие node selectors
  • Проблемы с taints и tolerations
  • Отсутствие подходящих узлов

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

  1. Проверь ресурсы узлов - kubectl describe nodes
  2. Проверь PVC - убедись в доступности PersistentVolume
  3. Проверь node selectors - убедись в правильности селекторов
  4. Проверь taints и tolerations - убедись в совместимости

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

1. Добавь больше ресурсов

1# Проверь доступные ресурсы
2kubectl describe nodes
 1# Уменьши запросы ресурсов в pod
 2apiVersion: v1
 3kind: Pod
 4metadata:
 5  name: my-app
 6spec:
 7  containers:
 8  - name: app
 9    image: my-app:latest
10    resources:
11      requests:
12        memory: "64Mi"  # уменьши если нужно
13        cpu: "100m"     # уменьши если нужно

2. Исправь PVC проблемы

1# Проверь статус PVC
2kubectl get pvc
3kubectl describe pvc my-pvc
 1# Создай PV если нужно
 2apiVersion: v1
 3kind: PersistentVolume
 4metadata:
 5  name: my-pv
 6spec:
 7  capacity:
 8    storage: 1Gi
 9  accessModes:
10    - ReadWriteOnce
11  hostPath:
12    path: /data

3. Исправь node selectors

1# Проверь labels узлов
2kubectl get nodes --show-labels
 1# Исправь node selector в pod
 2apiVersion: v1
 3kind: Pod
 4metadata:
 5  name: my-app
 6spec:
 7  nodeSelector:
 8    disk: ssd  # убедись, что такой label есть на узле
 9  containers:
10  - name: app
11    image: my-app:latest

4. Добавь больше узлов

1# Для managed кластеров (GKE, EKS, AKS)
2# Увеличь количество узлов через консоль провайдера
3
4# Для self-hosted кластеров
5# Добавь новый узел в кластер

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

  • Мониторь использование ресурсов узлов
  • Настрой алерты на Pending поды
  • Отслеживай события планирования
  • Используй Kubernetes Events

FAQ

В: Как проверить, почему под не планируется?

О: Используй kubectl describe pod pod-name и посмотри на секцию Events.

В: Что делать, если все узлы заняты?

О: Добавь больше узлов в кластер или оптимизируй использование ресурсов.

В: Как исправить проблемы с taints?

О: Добавь соответствующие tolerations в pod или удали taints с узлов.

Лучшие практики

  • Устанавливай разумные запросы ресурсов
  • Используй Horizontal Pod Autoscaler
  • Мониторь использование ресурсов
  • Настрой правильные node selectors
  • Используй pod disruption budgets