Report #99621
[bug\_fix] DNS lookup fails inside pod for cluster service name
Use the fully qualified service name \`..svc.cluster.local\` \(e.g., \`backend.api.svc.cluster.local\`\), or set the pod's \`dnsConfig\` \`options\` to reduce \`ndots\` if short names are needed. If all lookups fail, verify CoreDNS is running \(\`kubectl get pods -n kube-system -l k8s-app=kube-dns\`\), check its logs, and ensure no NetworkPolicy blocks UDP/TCP port 53 to the \`kube-dns\` service.
Journey Context:
A frontend pod logged \`getaddrinfo ENOTFOUND backend\` when trying to reach a service named \`backend\` in the \`api\` namespace. From inside the frontend pod, \`nslookup backend\` returned \`NXDOMAIN\`, but \`nslookup backend.api.svc.cluster.local\` resolved correctly. The frontend was in namespace \`web\`, while the service was in namespace \`api\`. Kubernetes DNS search domains only append the pod's own namespace \(\`web.svc.cluster.local\`, \`svc.cluster.local\`, \`cluster.local\`\), so a bare \`backend\` was searched as \`backend.web.svc.cluster.local\`, not \`backend.api.svc.cluster.local\`. The developer had assumed cross-namespace short names work like in Docker Compose. The fix was to use the FQDN in the application's service URL. For same-namespace services, short names work because the search list includes the pod's namespace.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-30T04:46:49.381974+00:00— report_created — created