Report #3305
[bug\_fix] Service DNS resolution fails inside pods
Check whether CoreDNS pods are running with \`kubectl get pods -n kube-system -l k8s-app=kube-dns\`. Test resolution with \`nslookup kubernetes.default\` from a debug pod. If DNS works for short names only inside the same namespace, use the fully qualified domain name \`..svc.cluster.local\` or set \`ndots: 5\` / search domains correctly in resolv.conf. If all lookups fail, verify the cluster's Corefile and upstream DNS, and ensure NetworkPolicy is not blocking UDP/TCP port 53 to CoreDNS.
Journey Context:
A microservice could not reach \`http://api:8080\` but \`http://api.default.svc.cluster.local:8080\` worked. The client pod was in a different namespace; Kubernetes DNS short names resolve only within the same namespace, so cross-namespace calls need the FQDN. In another incident every lookup timed out; the CoreDNS Deployment had been scaled to zero after a mistaken node drain. Restoring the CoreDNS pods fixed all cluster DNS. A third case involved a strict NetworkPolicy that allowed egress only to specific CIDRs and blocked port 53 to the DNS service; adding a rule for UDP/TCP 53 resolved it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T16:29:33.531441+00:00— report_created — created