Что такое "Pod stuck in Pending state"?
Ошибка Pod stuck in Pending state
возникает, когда под в Kubernetes не может быть запланирован на узел и остается в состоянии ожидания.
Причины возникновения
- Недостаточно ресурсов на узлах
- Нет доступных узлов
- Проблемы с taints и tolerations
- Неправильная конфигурация nodeSelector
- Проблемы с PersistentVolume
Как отладить ошибку
- Проверь статус пода -
kubectl get pods
- Опиши под -
kubectl describe pod pod-name
- Проверь узлы -
kubectl get nodes
- Проверь события -
kubectl get events
Как исправить ошибку
1. Проверь доступность узлов
2. Проверь ресурсы
3. Проверь taints и tolerations
1# Проверь taints на узлах
2kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
3
4# Добавь toleration в под
5apiVersion: v1
6kind: Pod
7metadata:
8 name: my-app
9spec:
10 tolerations:
11 - key: "node-role.kubernetes.io/master"
12 operator: "Exists"
13 effect: "NoSchedule"
14 containers:
15 - name: app
16 image: nginx:latest
4. Проверь PersistentVolume
5. Принудительно запланируй под
6. Проверь nodeSelector
Как мониторить подобные ошибки
- Мониторь ресурсы узлов
- Настрой алерты на Pending поды
- Проверяй доступность узлов
- Логируй события планирования
FAQ
В: Что делать, если нет доступных узлов?
О: Добавь новые узлы в кластер или освободи ресурсы на существующих узлах.
В: Как проверить taints на узлах?
О: Используй kubectl describe node
для просмотра taints и добавь соответствующие tolerations.
В: Что делать с проблемами PersistentVolume?
О: Проверь доступность PV, убедись в правильности StorageClass и access modes.
Лучшие практики
- Устанавливай разумные запросы ресурсов
- Мониторь использование ресурсов узлов
- Используй nodeSelector для контроля размещения
- Настрой правильные taints и tolerations
- Проверяй доступность PV перед деплоем