Stay organized with collections
Save and categorize content based on your preferences.
Service discovery and DNS overview
This topic describes how GKE on Azure interacts with Domain
Name Services (DNS).
Service discovery
Service discovery is the process where workloads discover services without
knowing the service's IP address. This section describes how
GKE on Azure implements service discovery and managed DNS.
Kubernetes automatically generates service names that use the following
specification:
service.namespace.svc.cluster.local
Where:
service: your service's name
namespace: your service's Namespace
Workloads also access external services— for example example.net—
using DNS names. For more information on the behavior of DNS in Kubernetes, see
DNS for Services and Pods.
CoreDNS
GKE on Azure uses
CoreDNS
to resolve DNS names within clusters. CoreDNS runs as a redundant, scaled
Deployment
in the kube-system
namespace. The CoreDNS deployment has a
Service that groups the CoreDNS Pods
and gives them a single IP address. The CoreDNS Deployment scales with the
cluster's size and usage.
NodeLocal DNSCache
GKE on Azure uses
NodeLocal DNSCache
to improve DNS lookup performance. NodeLocal DNSCache runs as a
DaemonSet
on each node in your cluster. When a Pod makes a DNS request, the request first
goes to the DNS cache on the same node. If the cache can't resolve the DNS
request, the cache forwards the request to either:
CoreDNS for an internal name— for example foo.bar.svc.cluster.local
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Service discovery and DNS overview\n==================================\n\nThis topic describes how GKE on Azure interacts with Domain\nName Services (DNS).\n\nService discovery\n-----------------\n\nService discovery is the process where workloads discover services without\nknowing the service's IP address. This section describes how\nGKE on Azure implements service discovery and managed DNS.\n\nKubernetes automatically generates service names that use the following\n[specification](https://github.com/kubernetes/dns/blob/master/docs/specification.md):\n\n\u003cvar translate=\"no\"\u003eservice\u003c/var\u003e`.`\u003cvar translate=\"no\"\u003enamespace\u003c/var\u003e`.svc.cluster.local`\n\nWhere:\n\n- \u003cvar translate=\"no\"\u003eservice\u003c/var\u003e: your service's name\n- \u003cvar translate=\"no\"\u003enamespace\u003c/var\u003e: your service's Namespace\n\nWorkloads also access external services--- for example `example.net`---\nusing DNS names. For more information on the behavior of DNS in Kubernetes, see\n[DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/).\n\n### CoreDNS\n\nGKE on Azure uses\n[CoreDNS](https://kubernetes.io/blog/2018/07/10/coredns-ga-for-kubernetes-cluster-dns/)\nto resolve DNS names within clusters. CoreDNS runs as a redundant, scaled\n[Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)\nin the `kube-system`\nnamespace. The CoreDNS deployment has a\n[Service](/kubernetes-engine/docs/concepts/service) that groups the CoreDNS Pods\nand gives them a single IP address. The CoreDNS Deployment scales with the\ncluster's size and usage.\n\n### NodeLocal DNSCache\n\nGKE on Azure uses\n[NodeLocal DNSCache](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/)\nto improve DNS lookup performance. NodeLocal DNSCache runs as a\n[DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)\non each node in your cluster. When a Pod makes a DNS request, the request first\ngoes to the DNS cache on the same node. If the cache can't resolve the DNS\nrequest, the cache forwards the request to either:\n\n- CoreDNS for an internal name--- for example `foo.bar.svc.cluster.local`\n\nWhat's next\n-----------\n\n- For an overview of how DNS is used in Kubernetes clusters, see [DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)."]]