Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kubernetes: Kube-DNS vs. CoreDNS

Tags:

dns

kubernetes

I am new to Kubernetes and looking for a better understanding of the difference between Kube-DNS and CoreDNS.

As I understand it the recommendation is to use the newer CoreDNS rather than the older Kube-DNS.

I have setup a small cluster using kubeadm and now I am a little confused about the difference between CoreDNS and Kube-DNS.

Using kubectl get pods --all-namespaces I can see that I have two CoreDNS pods running.

However using kubectl get svc --all-namespaces I also see that I have a service named kube-dns running in the kube-system namespace. When I inspect that with kubectl describe svc/kube-dns -n kube-system I can see that the kube-dns service links to coredns.

I am now wondering if I am actually running both kube-dns and coredns. Or else, why is that service called kube-dns and not core-dns?

like image 413
lanoxx Avatar asked Oct 11 '18 13:10

lanoxx


People also ask

Does Kubernetes use CoreDNS?

Like Kubernetes, the CoreDNS project is hosted by the 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.

What is the purpose of kube-DNS?

kube-dns is the authoritative name server for the cluster domain (cluster. local) and it resolves external names recursively. Short names that are not fully qualified, such as myservice , are completed first with local search paths.

What is Kubernetes cluster DNS?

Kubernetes DNS schedules a DNS Pod and Service on the cluster, and configures the kubelets to tell individual containers to use the DNS Service's IP to resolve DNS names. Every Service defined in the cluster (including the DNS server itself) is assigned a DNS name.


1 Answers

I have K8S 1.12. Do a describe of the dns pod.

kubectl describe pod coredns-576cbf47c7-hhjrs --namespace=kube-system | grep -i "image:"

Image: k8s.gcr.io/coredns:1.2.2

Looks like coredns is running. According to the documentation CoreDNS is default from K8S 1.11. For previous installations it's kube-dns.

The image is what important, rest are metadata (names, labels etc).

According to the K8S blog here.

In Kubernetes 1.11, CoreDNS has reached General Availability (GA) for DNS-based service discovery, as an alternative to the kube-dns addon. This means that CoreDNS will be offered as an option in upcoming versions of the various installation tools. In fact, the kubeadm team chose to make it the default option starting with Kubernetes 1.11.

Also, see this link for more info.

like image 162
Praveen Sripati Avatar answered Sep 22 '22 18:09

Praveen Sripati