Что такое Unschedulable?

Unschedulable статус означает, что под не может быть запланирован на узел из-за отсутствия ресурсов или конфликтующих политик.

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

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

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

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

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

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

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

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

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

3. Исправь node selectors

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