В Kubernetes сервис живет за счет совпадения селектора и меток у pod’ов. Стоит им разъехаться сервис останется без эндпоинтов и трафик просто перестанет доходить.
Классика сервис ищет pod’ы по селектору
app: frontend, а Deployment размечает их как component: frontend или app: ui. В итоге сервис существует, DNS работает, но kubectl get endpoints my-service показывает пустой список, а наружу это выглядит как «все крутится, но запросы висят».Пример:
# Service
spec:
selector:
app: frontend
---
# Deployment pod labels
metadata:
labels:
app: ui
Такая мелочь превращает все реплики в осиротевшие поды. Сервис их не видит и не проксирует к ним трафик. Диагностика всегда начинается с
kubectl get endpoints <svc> и проверки kubectl get pods -l key=value.Чтобы не ловить тихие простои держите правило селекторы и метки описываются в одном месте и копируются, а не набираются с клавиатуры плюс при любом изменении сразу проверяйте
kubectl get endpoints и kubectl describe svc прежде чем считать rollout успешным.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
