A failed readiness probe removes a Pod from the live endpoint list within moments.
Behind each Service is an EndpointSlice listing ready Pod IPs. A headless Service skips the virtual IP and returns the Pod IPs directly.
The readiness link
Probe fails, the EndpointSlice controller drops the Pod, kube-proxy updates its rules. Traffic stops reaching it, but the container keeps running.
DNS returns the individual Pod IPs and no load-balancing layer sits in between. With a StatefulSet each Pod gets its own name: pg-0.postgres.shop.svc.cluster.local.
no endpoints? start here
$ kubectl get endpointslices -l kubernetes.io/service-name=checkout $ kubectl describe svc checkout | grep -A3 Endpoints # empty = selector matches no Ready Pods