A pod cannot reach a Kubernetes Service because the Service doesn't exist, is in a different namespace, or has no endpoints. Applications can't connect to the service DNS name. Fix by creating the Service, verifying label selectors match pod labels, or using fully qualified DNS names for cross-namespace access.
Kubernetes Services provide stable DNS names for pod groups. When a pod tries to reach a service by name (e.g., myservice or myservice:8080), Kubernetes DNS (CoreDNS) resolves the name to the service's cluster IP. If the Service doesn't exist, the DNS lookup fails. Alternatively, the Service may exist but have no endpoints (no running pods match its label selector), so even if DNS resolves, traffic fails. Services are namespace-scoped; cross-namespace access requires fully qualified names.
List services:
kubectl get svc -n <namespace>
kubectl describe svc <service-name> -n <namespace>Check for spelling and namespace.
Service needs running pods matching its selector:
kubectl describe svc <service-name> -n <namespace>
# Look at Endpoints field
kubectl get endpoints <service-name> -n <namespace>If Endpoints shows <none>, no pods match selector.
Compare labels:
kubectl get pods --show-labels -n <namespace>
kubectl describe svc <service-name> -n <namespace> | grep SelectorPod labels must match service selector exactly (case-sensitive).
Check pod status:
kubectl get pods -n <namespace>Pods must be Running and Ready. Fix startup issues if pods are not running.
Use fully qualified domain name:
# From pod in different namespace
curl http://myservice.other-namespace.svc.cluster.local:8080Within same namespace, just myservice works.
From a pod, test DNS:
kubectl exec -it <pod-name> -n <namespace> -- nslookup myserviceIf resolution fails, check CoreDNS.
Check DNS add-on:
kubectl get pods -n kube-system | grep corednsIf missing or not running, cluster DNS won't work.
Services don't require explicit export for cross-namespace access—just use FQDN. Network policies can block DNS (UDP/53) or traffic to service ports. Use "publishNotReadyAddresses: true" if pods should be endpoints while starting. For Ingress, ensure backend service exists in same namespace as Ingress resource. Services with no endpoints still exist; traffic just fails (useful for external services pointing to non-Kubernetes endpoints).
No subnets found for EKS cluster
How to fix "eks subnet not found" in Kubernetes
unable to compute replica count
How to fix "unable to compute replica count" in Kubernetes HPA
error: context not found
How to fix "error: context not found" in Kubernetes
default backend - 404
How to fix "default backend - 404" in Kubernetes Ingress
serviceaccount cannot list resource
How to fix "serviceaccount cannot list resource" in Kubernetes