CoreDNS is a flexible, extensible DNS server written in Go that’s become the default DNS service for Kubernetes. It replaced kube-dns as the standard cluster DNS starting with Kubernetes 1.13, and now runs in virtually every Kubernetes cluster in production.
What makes CoreDNS different from traditional DNS servers like BIND is its plugin-based architecture. Every piece of functionality — caching, forwarding, logging, health checks, metrics — is implemented as a plugin. Users configure CoreDNS through a simple Corefile that chains plugins together, making it easy to customize DNS behavior.
CoreDNS graduated from the CNCF in 2019, one of the first projects to reach that status. Beyond Kubernetes, it’s used as a general-purpose DNS server, a service discovery tool, and a forwarding resolver. Its lightweight footprint and Go-based implementation make it fast and easy to deploy.
The project was created by Miek Gieben, a well-known figure in the DNS community. CoreDNS handles billions of DNS queries daily across Kubernetes clusters worldwide. It supports DNS over TLS, DNS over HTTPS, and integrates with service registries like etcd and Consul for dynamic service discovery.