Kubernetes deployment health externally
Readiness-probe внутри пода есть, но никто не видит, что LB отказался роутить трафик на новый deploy.
Рецепт
# Экспонируйте health endpoint через Ingress, а не только ClusterIP
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-healthz
spec:
rules:
- host: app.example.com
http:
paths:
- path: /readyz
pathType: Exact
backend: { service: { name: app, port: { number: 80 } } }
То же самое в Enterno.io
Добавьте Enterno monitor на https://app.example.com/readyz. Если cluster DNS ломает доступ к /readyz — вы узнаёте раньше пользователей.
Похожие рецепты
CrashLoopBackOff в одном пространстве имён — kubectl показывает restart-count = 47, но никто не видит. Хочется endpoint, который вернёт high когда счётчик прыгает.
etcd в кластере K8s переизбирает лидера каждые 30 сек — kube-apiserver лагает, controller-manager не успевает применять reconcile. Это видно только в etcd-метриках.
Node ушла в NotReady (kubelet не пингует apiserver, runtime болен) — поды на ней живут как зомби пока taint не выгонит. Kubernetes-events не уйдут в Slack по умолчанию.