Что такое Service Unavailable?
Ошибка Service Unavailable (503)
возникает, когда сервис в Kubernetes недоступен или не может обработать запросы.
Причины возникновения
- Поды не готовы (Readiness probe failed)
- Недостаточно реплик
- Проблемы с сетью
- Ошибки в приложении
- Проблемы с конфигурацией Service
- Высокая нагрузка на сервис
Как отладить ошибку
- Проверь статус подов -
kubectl get pods
- Проверь Service -
kubectl get svc
- Проверь Endpoints -
kubectl get endpoints
- Проверь логи приложения -
kubectl logs pod-name
- Проверь сетевую связность -
kubectl exec pod-name -- curl service
Как исправить ошибку
1. Проверь и исправь readiness probe
2. Увеличь количество реплик
3. Настрой правильный Service
4. Исправь проблемы с сетью
5. Настрой health check endpoint
1# Пример для Python/Flask
2from flask import Flask
3
4app = Flask(__name__)
5
6@app.route('/health')
7def health_check():
8 return {'status': 'healthy'}, 200
9
10@app.route('/ready')
11def ready_check():
12 # Проверь зависимости
13 if check_database() and check_redis():
14 return {'status': 'ready'}, 200
15 return {'status': 'not ready'}, 503
6. Используй Circuit Breaker
1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: my-app-ingress
5 annotations:
6 nginx.ingress.kubernetes.io/circuit-breaker: "true"
7spec:
8 rules:
9 - host: my-app.example.com
10 http:
11 paths:
12 - path: /
13 pathType: Prefix
14 backend:
15 service:
16 name: my-app-service
17 port:
18 number: 80
Как мониторить подобные ошибки
- Настрой алерты на 503 ошибки
- Мониторь доступность сервисов
- Проверяй метрики response time
- Используй health checks
FAQ
В: Что делать, если readiness probe постоянно падает?
О: Проверь endpoint приложения, увеличь timeout, убедись в правильности пути.
В: Как отладить проблемы с Service?
О: Проверь selector, убедись в правильности портов, проверь Endpoints.
В: Что делать с высокой нагрузкой?
О: Увеличь количество реплик, настрой HPA, оптимизируй приложение.
Лучшие практики
- Всегда используй readiness и liveness пробы
- Настрой правильные лимиты ресурсов
- Используй мониторинг и алерты
- Тестируй отказоустойчивость
- Документируй зависимости сервисов