April 24, 2019 · 1 min read · Aizhan Azhybaeva · Updated June 19, 2026

CoreDNS: DNS and Service Discovery for Kubernetes

CoreDNS is a flexible, extensible DNS server written in Go and the default DNS solution for Kubernetes. Learn how its plugin architecture enables Kubernetes service discovery, Prometheus metrics, and more.

CoreDNS: DNS and Service Discovery for Kubernetes

CoreDNS is a DNS server created in Go, designed for flexibility across diverse environments. The project is open source under the Apache License Version 2 and maintains active development on GitHub, with community discussion centered on Slack’s #coredns channel.

Key Features

Plugin Architecture

The system uses a chaining approach where individual plugins handle specific DNS tasks, including “Kubernetes service discovery, Prometheus metrics or rewriting queries,” among others.

Design Philosophy

The developers prioritize simplicity and sensible defaults. Their Corefile configuration for coredns.io demonstrates this straightforward approach:

coredns.io {
  file coredns.io.signed {
    transfer to * 185.49.140.62
  }
  prometheus
  errors
  log
}

Service Discovery

Integration capabilities include the Kubernetes plugin for Kubernetes environments and the etcd plugin for direct etcd connectivity.

Performance and Customization

The platform emphasizes speed and efficiency while offering flexibility through its modular plugin system, allowing compilation with only necessary components.

Recognition

CoreDNS achieved graduated project status within the Cloud Native Computing Foundation (CNCF), making it a production-grade, enterprise-ready DNS solution.

Frequently Asked Questions

What is CoreDNS and why does Kubernetes use it by default?

CoreDNS is the default DNS server for Kubernetes, replacing kube-dns since Kubernetes 1.13. It handles service discovery by resolving cluster-internal DNS names to pod and service IPs. Its plugin-based architecture makes it easy to extend without replacing the entire DNS server.

How does CoreDNS handle Kubernetes service discovery?

CoreDNS uses its Kubernetes plugin to watch the Kubernetes API and automatically create DNS records for every Service and Pod in the cluster. When an application queries a service by its DNS name, CoreDNS resolves it to the correct cluster IP — no manual configuration needed.

Is CoreDNS production-ready and enterprise-supported?

Yes. CoreDNS has achieved graduated project status within the CNCF — the same tier as Kubernetes and Prometheus — which signals it meets the reliability and governance standards expected for enterprise production use. It is actively maintained with a large open-source community.

Can I add Prometheus metrics to CoreDNS without replacing the server?

Yes. CoreDNS exposes Prometheus metrics through its built-in prometheus plugin, which you enable with a single line in the Corefile configuration. No sidecar or separate exporter is required, making it straightforward to scrape DNS performance data into your existing Prometheus monitoring stack.

How do I reload CoreDNS configuration without downtime?

CoreDNS supports hot-reload of its Corefile — changes take effect without restarting the server or dropping DNS queries. In Kubernetes, updating the CoreDNS ConfigMap and triggering a rolling restart of the CoreDNS Deployment is the standard zero-downtime approach.

Get Started for Free

We would be happy to speak with you and arrange a free consultation with our Kubernetes Expert in Dubai, UAE. 30-minute call, actionable results in days.

Talk to an Expert