Что такое Insufficient resources?
Ошибка Insufficient resources
возникает, когда Kubernetes не может разместить поды из-за нехватки ресурсов на узлах кластера.
Причины возникновения
- Недостаточно CPU на узлах
- Недостаточно памяти на узлах
- Недостаточно места на диске
- Проблемы с GPU ресурсами
- Неправильная настройка requests/limits
- Высокая нагрузка на кластер
Как отладить ошибку
- Проверь ресурсы узлов -
kubectl top nodes
- Проверь pending поды -
kubectl get pods --field-selector=status.phase=Pending
- Проверь события -
kubectl describe pod pod-name
- Проверь capacity узлов -
kubectl describe node
- Проверь requests/limits -
kubectl get pods -o yaml
Как исправить ошибку
1. Увеличь ресурсы узлов
2. Оптимизируй requests и limits
3. Используй горизонтальное масштабирование
1apiVersion: autoscaling/v2
2kind: HorizontalPodAutoscaler
3metadata:
4 name: my-app-hpa
5spec:
6 scaleTargetRef:
7 apiVersion: apps/v1
8 kind: Deployment
9 name: my-app
10 minReplicas: 2
11 maxReplicas: 10
12 metrics:
13 - type: Resource
14 resource:
15 name: cpu
16 target:
17 type: Utilization
18 averageUtilization: 70
4. Настрой вертикальное масштабирование
5. Используй node affinity
6. Настрой taints и tolerations
1# Добавь taint на узел
2kubectl taint nodes node1 app=high-memory:NoSchedule
3
4# Добавь toleration в под
5apiVersion: v1
6kind: Pod
7metadata:
8 name: my-app
9spec:
10 tolerations:
11 - key: "app"
12 operator: "Equal"
13 value: "high-memory"
14 effect: "NoSchedule"
15 containers:
16 - name: app
17 image: nginx:latest
Как мониторить подобные ошибки
- Мониторь использование ресурсов узлов
- Настрой алерты на высокое использование ресурсов
- Проверяй pending поды регулярно
- Используй метрики кластера
FAQ
В: Как определить оптимальные requests/limits?
О: Мониторь использование ресурсов, используй VPA для автоматической настройки.
В: Что делать, если нет возможности добавить узлы?
О: Оптимизируй приложения, используй более эффективные образы, настрой HPA.
В: Как избежать проблем с ресурсами в production?
О: Планируй capacity заранее, используй мониторинг, настрой autoscaling.
Лучшие практики
- Устанавливай разумные requests и limits
- Мониторь использование ресурсов
- Используй autoscaling
- Планируй capacity заранее
- Оптимизируй приложения