Ответ
Я начинаю с проверки состояния ресурсов и логики в порядке от простого к сложному:
- Базовые проверки:
# Существует ли сервис и под? kubectl get svc,po -n <namespace> # Проверка селекторов сервиса и лейблов пода kubectl describe svc <service-name> -n <namespace> kubectl get po -n <namespace> --show-labels # Доступны ли эндпоинты? kubectl get endpoints <service-name> -n <namespace> - Проверка сети и DNS:
# Запускаю временный под для тестирования DNS и сетевой связности kubectl run dns-test --image=busybox:1.28 -it --rm --restart=Never -- nslookup <service-name>.<namespace>.svc.cluster.local kubectl run curl-test --image=curlimages/curl -it --rm --restart=Never -- curl -v http://<service-name>.<namespace>.svc.cluster.local:8080 - Анализ политик сети и логов:
- Проверяю
NetworkPolicy:kubectl get networkpolicy -n <namespace>. - Смотрю логи пода приложения:
kubectl logs <pod-name> -n <namespace>. - Проверяю события кластера:
kubectl get events -n <namespace> --sort-by='.lastTimestamp'.
- Проверяю
- Проверка конфигурации пода: Убеждаюсь, что контейнер слушает правильный порт, указанный в манифесте сервиса. Если проблема системная, проверяю состояние CNI-плагина (Calico, Cilium) и kube-proxy.