diff --git a/content/en/docs/tasks/administer-cluster/coredns.md b/content/en/docs/tasks/administer-cluster/coredns.md index 54163058c8698..43a75275b85a6 100644 --- a/content/en/docs/tasks/administer-cluster/coredns.md +++ b/content/en/docs/tasks/administer-cluster/coredns.md @@ -19,11 +19,14 @@ This page describes the CoreDNS upgrade process and how to install CoreDNS inste ## About CoreDNS -[CoreDNS](https://coredns.io) is a flexible, extensible DNS server that can serve as the Kubernetes cluster DNS. -Like Kubernetes, the CoreDNS project is hosted by the {{< glossary_tooltip text="CNCF" term_id="cncf" >}}. +[CoreDNS](https://coredns.io) is a flexible, extensible DNS server +that can serve as the Kubernetes cluster DNS. +Like Kubernetes, the CoreDNS project is hosted by the +{{< glossary_tooltip text="CNCF" term_id="cncf" >}}. -You can use CoreDNS instead of kube-dns in your cluster by replacing kube-dns in an existing -deployment, or by using tools like kubeadm that will deploy and upgrade the cluster for you. +You can use CoreDNS instead of kube-dns in your cluster by replacing +kube-dns in an existing deployment, or by using tools like kubeadm +that will deploy and upgrade the cluster for you. ## Installing CoreDNS @@ -34,51 +37,44 @@ For manual deployment or replacement of kube-dns, see the documentation at the ### Upgrading an existing cluster with kubeadm -In Kubernetes version 1.10 and later, 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 +In Kubernetes version 1.21, kubeadm removed its support for `kube-dns` as a DNS application. +For `kubeadm` v{{< skew currentVersion >}}, the only supported cluster DNS application +is CoreDNS. + +You can move to CoreDNS when you use `kubeadm` to upgrade a cluster that is +using `kube-dns`. In this case, `kubeadm` generates the CoreDNS configuration ("Corefile") based upon the `kube-dns` ConfigMap, preserving configurations for stub domains, and upstream name server. -If you are moving from kube-dns to CoreDNS, make sure to set the `CoreDNS` feature gate to `true` -during an upgrade. For example, here is what a `v1.11.0` upgrade would look like: -``` -kubeadm upgrade apply v1.11.0 --feature-gates=CoreDNS=true -``` - -In Kubernetes version 1.13 and later the `CoreDNS` feature gate is removed and CoreDNS -is used by default. - -In versions prior to 1.11 the 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. - -If you are running CoreDNS in Kubernetes version 1.11 and later, during upgrade, -your existing Corefile will be retained. +## Upgrading CoreDNS -In Kubernetes version 1.21, support for `kube-dns` is removed from kubeadm. +You can check the version of CoreDNS that kubeadm installs for each version of +Kubernetes in the page +[CoreDNS version in Kubernetes](https://github.com/coredns/deployment/blob/master/kubernetes/CoreDNS-k8s_version.md). -## Upgrading CoreDNS +CoreDNS can be upgraded manually in case you want to only upgrade CoreDNS +or use your own custom image. +There is a helpful [guideline and walkthrough](https://github.com/coredns/deployment/blob/master/kubernetes/Upgrading_CoreDNS.md) +available to ensure a smooth upgrade. +Make sure the existing CoreDNS configuration ("Corefile") is retained when +upgrading your cluster. -CoreDNS is available in Kubernetes since v1.9. -You can check the version of CoreDNS shipped with Kubernetes and the changes made to CoreDNS [here](https://github.com/coredns/deployment/blob/master/kubernetes/CoreDNS-k8s_version.md). +If you are upgrading your cluster using the `kubeadm` tool, `kubeadm` +can take care of retaining the existing CoreDNS configuration automatically. -CoreDNS can be upgraded manually in case you want to only upgrade CoreDNS or use your own custom image. -There is a helpful [guideline and walkthrough](https://github.com/coredns/deployment/blob/master/kubernetes/Upgrading_CoreDNS.md) available to ensure a smooth upgrade. ## Tuning CoreDNS -When resource utilisation is a concern, it may be useful to tune the configuration of CoreDNS. For more details, check out the +When resource utilisation is a concern, it may be useful to tune the +configuration of CoreDNS. For more details, check out the [documentation on scaling CoreDNS](https://github.com/coredns/deployment/blob/master/kubernetes/Scaling_CoreDNS.md). - - ## {{% heading "whatsnext" %}} - You can configure [CoreDNS](https://coredns.io) to support many more use cases than -kube-dns by modifying the `Corefile`. For more information, see the -[CoreDNS site](https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/). - - - +kube-dns does by modifying the CoreDNS configuration ("Corefile"). +For more information, see the [documentation](https://coredns.io/plugins/kubernetes/) +for the `kubernetes` CoreDNS plugin, or read the +[Custom DNS Entries for Kubernetes](https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/). +in the CoreDNS blog.