Kubernetes / Services, DNS & Traffic Routing
Understand headless Service DNS before expecting a virtual IP
A headless Service is designed to expose endpoint discovery rather than an ordinary cluster virtual IP. Inspect its definition and endpoints.
Environment and inputs: Kubernetes · kubectl with supported client/server versions and delegated RBAC. Examples use namespace app unless noted. Check context, namespace, APIs and provider support first.
Start with this check
Confirm the environment and replace sample objects, namespaces, images, paths and hosts with approved targets. Share only relevant, sanitized output. Follow the workload owner’s process for changes.
kubectl -n app get service database -o jsonpath='{.spec.clusterIP}{" "}{.spec.selector}'
kubectl -n app get endpointslices -l kubernetes.io/service-name=database
Read the result
A clusterIP of None identifies headless intent. Returned discovery records depend on endpoint readiness and relevant Service configuration.
Resolve and verify
Compare the application's discovery contract with StatefulSet identity and actual DNS answers. Fix endpoint or client expectations rather than assigning a random IP.
Before changing production
Do not replace a headless Service with a regular one without reviewing persistent peer-discovery requirements.