This page describes how to enable CoreDNS instead of kube-dns for service discovery.
You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube, or you can use one of these Kubernetes playgrounds:
Your Kubernetes server must be version v1.9 or later.
To check the version, enter
In Kubernetes 1.9, CoreDNS is available as an alpha feature, and
in Kubernetes 1.10 it is available as a beta feature. In either case, you may install
it during cluster creation by setting the
CoreDNS feature gate to
kubeadm init --feature-gates=CoreDNS=true
This installs CoreDNS instead of kube-dns.
To use a custom image repository for the CoreDNS image, e.g. one located in your own Docker registry, you can execute the following command after kubeadm has deployed the CoreDNS manifest:
kubectl set image -n kube-system deploy/coredns coredns=prefix.example.com/coredns/coredns:1.0.6
In Kubernetes 1.10, you can also move to CoreDNS when you use
kubeadm to upgrade
a cluster that is using
kube-dns. In this case,
kubeadm will generate the CoreDNS configuration
(“Corefile”) based upon the
kube-dns ConfigMap, preserving configurations for federation,
stub domains, and upstream name server.
Note that if you are running CoreDNS in your cluster already, prior to upgrade, your existing Corefile will be overwritten by the one created during upgrade. You should save your existing ConfigMap if you have customized it. You may re-apply your customizations after the new ConfigMap is up and running.
This process will be modified for the GA release of this feature, such that an existing Corefile will not be overwritten.