<!-- llms-explorer concept facts · https://llms-explorer.com/tree/gke-nodelocal-dnscache-atlas/ · pack 2026-10-23 · ~1013 tokens -->

# GKE NodeLocal DNSCache Atlas

> Source-anchored research for GKE NodeLocal DNSCache Atlas. Run status: COMPLETED.

Parent: [MongoDB Atlas on GCP](https://llms-explorer.com/tree/mongodb-atlas-on-gcp/) · 3 facets · 10 facts · page: https://llms-explorer.com/tree/gke-nodelocal-dnscache-atlas/

## Structure and components

- For Atlas failures, test SRV resolution with dig SRV _mongodb._tcp.<cluster-host>, resolve each returned node hostname, then test TCP connectivity from the affected workload. Non-SRV URIs bypass SRV discovery but still contain hostnames requiring DNS. (low confidence) — [source](https://www.mongodb.com/docs/atlas/troubleshoot-connection.md)

## Problems, failure modes and limitations

- GKE enables NodeLocal DNSCache by default in Autopilot, where it cannot be disabled; Standard enables it by default starting at 1.34.1-gke.3720000. (low confidence) (verified as of 2026-10-22) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache)
- Signicat’s December 2023 GKE report described CoreDNS NodeLocal forwarding to kube-dns over TCP, a hard-coded dnsmasq worker limit, and latency spikes coinciding with open connections above that limit. The author recommended Cloud DNS for that stack. This is a historical operational report, not an Atlas benchmark. (low confidence) — [source](https://www.signicat.com/blog/dont-use-nodelocal-dnscache-on-gke)
- Signicat’s December 2023 report described a hard-coded 20-child dnsmasq limit in its GKE NodeLocal-to-kube-dns stack. Google’s GKE documentation distinguishes legacy kube-dns through version 1.35 from CoreDNS-based kube-dns in version 1.36 and later, so Signicat’s historical observation is not a universal current GKE limit. (medium confidence) (verified as of 2026-10-22) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/concepts/kube-dns)

## Facts and statements

- NodeLocal DNSCache places a DNS cache on each GKE node, reducing central DNS load and lookup latency. It is a Kubernetes DNS optimization, not an Atlas feature. (high confidence) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache)
- A July 25, 2025 community report describes intermittent UnknownHostException and server-selection timeouts from GKE Autopilot to peered Atlas despite successful connections. The report supplies no confirmed NodeLocal DNSCache diagnosis or remedy. (low confidence) — [source](https://www.mongodb.com/community/forums/t/gke-autopilot-atlas-vpc-peering-intermittent-dns-resolution-failures-despite-successful-java-driver-shell-connection/326252)
- NodeLocal forwards external queries through the local metadata server, bypassing kube-dns. For its cache, positive records expire at the lesser of their TTL and 30 seconds; NXDOMAIN expires after five seconds. (low confidence) (verified as of 2026-10-22) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache)
- DNS egress policies can break NodeLocal resolution. Inspect the actual resolver path and permit its TCP/UDP DNS traffic; a namespace-only selector failed in Argo CD’s historical GKE incident. (medium confidence) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache)
- Mercari’s June 2025 engineering account reports a tenfold reduction in kube-dns calls and tenfold to hundredfold fewer DNS errors after NodeLocal rollout. These are workload-specific observations, not measured Atlas improvements. (low confidence) (verified as of 2025-06-04) — [source](https://about.in.mercari.com/news/mercari-india/from-dns-failures-to-resilience-how-nodelocal-dnscache-saved-the-day-sanu-satyadarshi/)
- For kube-dns upstream timeout logs, Google suggests increasing kube-dns replicas; that workaround does not apply to metadata-server timeouts. Autopilot does not support the documented kube-dns-autoscaler customization. (low confidence) (verified as of 2026-10-22) — [source](https://docs.cloud.google.com/kubernetes-engine/docs/how-to/nodelocal-dns-cache)
