Files
wild-cloud/setup/cluster/coredns

CoreDNS

CoreDNS has the kubernetes plugin, so it returns all k8s service endpoints in well-known format.

All services and pods are registered in CoreDNS.

  • ..svc.cluster.local

  • .

  • (if in the same namespace)

  • ..pod.cluster.local

  • ...svc.cluster.local

Any query for a resource in the internal.$DOMAIN domain will be given the IP of the Traefik proxy. We expose the CoreDNS server in the LAN via MetalLB just for this capability.

Default CoreDNS Configuration

Found at: https://github.com/k3s-io/k3s/blob/master/manifests/coredns.yaml

This is k3s default CoreDNS configuration, for reference:

.:53 {
    errors
    health
    ready
    kubernetes %{CLUSTER_DOMAIN}% in-addr.arpa ip6.arpa {
      pods insecure
      fallthrough in-addr.arpa ip6.arpa
    }
    hosts /etc/coredns/NodeHosts {
      ttl 60
      reload 15s
      fallthrough
    }
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
    import /etc/coredns/custom/*.override
}
import /etc/coredns/custom/*.server