Ответ
Я пройду по всей цепочке от пода до внешнего пользователя, используя методологию отладки "от внутреннего к внешнему".
1. Проверка Pod'ов:
kubectl get pods -n <namespace> -o wide
kubectl describe pod <pod-name> # Смотрю Events, Conditions
kubectl logs <pod-name> --tail=50 # Ищу ошибки инициализации или рантайма
Цель: Убедиться, что поды в статусе Running и прошли все Readiness/Liveness пробы.
2. Проверка Service:
kubectl get svc -n <namespace>
kubectl describe svc <service-name>
kubectl get endpoints <service-name> # Есть ли активные эндпоинты (IP:Port подов)?
Цель: Убедиться, что сервис селектирует правильные поды и у него есть активные эндпоинты.
3. Проверка Ingress:
kubectl get ingress -n <namespace>
kubectl describe ingress <ingress-name>
# Проверяю логи ingress-контроллера (часто это nginx)
kubectl logs -n ingress-nginx deployment/ingress-nginx-controller --tail=20
Цель: Убедиться, что Ingress правильно маршрутизирует трафик на бэкенд-сервис, нет ошибок в TLS-сертификатах или аннотациях.
4. Проверка изнутри кластера:
# Запускаю отладочный под и пытаюсь достучаться до сервиса изнутри сети кластера
kubectl run -it --rm debug --image=busybox --restart=Never -- sh
# Внутри контейнера:
wget -O- http://<service-name>.<namespace>.svc.cluster.local:80
Если изнутри кластера сайт работает, проблема во внешней маршрутизации (Ingress, LoadBalancer, DNS, фаервол).
5. Проверка внешних факторов:
- DNS:
dig +short <мой-сайт.ru>— резолвится ли в IP адрес LoadBalancer'а или NodePort? - Фаервол/Cloud Security Groups: Разрешён ли входящий трафик на порты 80/443 к нодам кластера или IP балансировщика?