This comprehensive hands-on course teaches you how to deploy, configure, and troubleshoot CoreDNS—the default DNS server for Kubernetes and a CNCF graduated project. You'll progress from basic concepts to advanced production configurations through practical exercises.
Course Topics
Topic 1: Introduction to CoreDNS
What you'll learn:
- CoreDNS History & Architecture: Understand the origin story (forked from Caddy), CNCF graduation, and adoption by Kubernetes
- Plugin-Based Design Philosophy: Learn why “everything is a plugin” makes CoreDNS flexible and modular
- Corefile Fundamentals: Master the main configuration file that defines domains, ports, and plugin chains
- Query Processing Model: Understand how DNS queries flow through the sequential plugin chain
- Installation & Setup: Download, install, and configure CoreDNS v1.12.3 on Linux
- First DNS Server: Build and test your first CoreDNS server using the whoami plugin
Hands-on exercises:
- Install CoreDNS binary and set up system PATH
- Run CoreDNS with the default configuration
- Test DNS queries using the dig command
- Observe query logs and understand server behavior
Topic 2: Corefile Syntax & Configuration
What you'll learn:
- Production-Ready DNS Architecture: Build DNS servers from scratch
- Caching & Forwarding: Set up a basic DNS resolver with caching and upstream forwarding to 8.8.8.8
- Local Zone Management: Create and serve custom DNS zones from zone files
- Multi-Port Configuration: Serve different zones on dedicated ports (e.g., port 5300)
- Intelligent Fallback: Use the fallthrough keyword for incomplete zone files
- Server Block Structure: Understand zone definitions, port bindings, and plugin ordering
- Zone File Format: Work with SOA records, NS records, and A records
Hands-on exercises:
- Configure a basic forwarder with caching on port 53
- Add a local zone example.local using the file plugin
- Serve the internal zone on a separate port 5300
- Implement fallthrough for incomplete internal.network zone
- Test configurations using dig queries
Topic 3: CoreDNS Plugins Deep Dive
What you'll learn:
- Plugin Architecture: Understand modularity, flexibility, and extensibility
Essential Plugins:
- hosts: Serve DNS from local hosts file (like /etc/hosts)
- forward: Route queries to upstream DNS servers
- etcd: Dynamic service discovery using etcd key-value store
- rewrite: Transform DNS queries (e.g., rewrite search.local → google.com
- loadbalance: Round-robin distribution across multiple IPs
- log: Enable query logging for debugging
- errors: Log DNS errors to stdout
- cache: Store responses to speed up lookups
- Plugin Chaining: Combine multiple plugins with proper ordering
- Fallthrough Mechanism: Pass queries to the next plugin when no match is found
- Docker Integration: Run etcd containers for a dynamic DNS backend
Hands-on exercises:
- Configure a hosts plugin to resolve service-a.lab.local
- Set up forwarding to Google DNS (8.8.8.8)
- Deploy an etcd container and configure the CoreDNS etcd plugin
- Implement DNS rewriting for development environments
- Configure load balancing for multi-backend services
- Chain plugins for a complete DNS resolution pipeline
Topic 4: Service Discovery in Kubernetes
What you'll learn:
- DNS in Kubernetes Clusters: Identify and understand the CoreDNS deployment in kube-system
Two Service Discovery Methods:
- Environment Variable-Based Discovery (automatic injection by kubelet)
- Cluster DNS-Based Discovery (preferred method)
DNS and Service Resolution Concepts:
- Pod DNS Configuration: Examine /etc/resolv.conf and understand nameserver and search domains
- DNS Naming Conventions: Master the structure ..svc.cluster.local
- Intra-Namespace Resolution: Resolve services within the same namespace using short names
- Cross-Namespace Resolution: Access services in different namespaces using qualified names
- Troubleshooting Connectivity: Debug and fix service connection issues between pods
Hands-on exercises:
- Inspect CoreDNS pods and services in a Kubernetes cluster
- Use nslookup to test DNS resolution from inside pods
- Resolve services using short names vs FQDNs
- Fix webapp-to-database connectivity across namespaces
- Redirect DNS query outputs to files for verification
Topic 5: Inspection & Debugging CoreDNS
What you'll learn:
- Diagnosing Complete DNS Failures: Identify when internal service resolution fails
- RBAC Permission Issues: Understand CoreDNS service account requirements (list/watch on services, endpoints, endpointslices)
- External Domain Resolution Problems: Fix forwarding configuration for internet domains
- Custom Cluster Domains: Change from cluster.local to custom domains like hello.kodekloud
- Log Analysis: Read and interpret CoreDNS error messages
- DNS Resolution Flow: Understand the complete path from pod query to API server
- Search Domain Behavior: Master how DNS search domains affect query resolution
Hands-on exercises:
- Fix RBAC permissions by editing ClusterRole for CoreDNS
- Uncomment and configure the forward plugin for external DNS
- Update kubelet and CoreDNS for the custom cluster domain
- Analyze CoreDNS logs to identify permission errors
- Validate DNS changes using new test pods
Course Learning Outcomes
After completing this course, you will be able to:
- Install and configure CoreDNS from scratch
- Understand the plugin-based architecture and create custom plugin chains
- Deploy and manage CoreDNS in Kubernetes environments
- Troubleshoot DNS resolution issues using logs and debugging tools
- Configure service discovery for microservices architectures
- Implement custom DNS zones and domain configurations
- Integrate CoreDNS with etcd for dynamic service registration
- Apply RBAC best practices for CoreDNS in Kubernetes
- Build production-ready, observable DNS infrastructure
Prerequisites
- Basic understanding of DNS concepts
- Familiarity with the Linux command line
- Basic Kubernetes knowledge (for Topics 4–5)
- Understanding of Docker containers (for Topic 3)
Course Format
- Hands-on labs with real configurations
- Multiple choice questions to test understanding
- Practical troubleshooting scenarios
- Progressive complexity from basics to advanced topics
- Production-ready examples you can use in real environments
This course takes you on a complete journey from CoreDNS fundamentals to advanced production configurations, with a strong emphasis on Kubernetes integration and real-world troubleshooting.