Can someone please detail the steps necessary to install the kube-dns addon? I've downloaded the nearly 400MB git repo in the previous link and run make
as instructed but get Nothing to be done for 'all'.
The docs aren't clear what form add-ons exist in, and how to install them. The "Administrators guide" link there takes me to this unhelpful page.
I've tried https://stackoverflow.com/a/42315074/4978821, but got an error validating data
message. Even if this worked, it seems like it'd be an unofficial and awkward solution.
Answers like this are also too vague: https://stackoverflow.com/a/36105547/4978821.
I'd be happy to create a pull request to improve the documentation, once I have a solution.
Updated to clarify my issue:
As mentioned by Aaron, the dns addon is enabled in minikube by default. Running minikube addons list
shows that it is enabled. However, if I get into a bash shell for a running pod, like such kubectl exec -it node-controller-poqsl bash
and try to reach my mongo service using ping, for example, it resolves to a public URL, rather than the kubernetes service IP.
This addon acts as a DNS service that runs inside your kubernetes cluster. All you have to do is install the service and add the $ (minikube ip) as a DNS server on your host machine. Each time the dns service is queried an API call is made to the kubernetes master service for a list of all the ingresses.
DNS service for ingress controllers running on your minikube server When running minikube locally, you may want to run your services on an ingress controller so that you don’t have to use minikube tunnel or NodePorts to access your services. While NodePort might be okay in a lot of circumstances, an ingress is necessary to test some features.
There was a transitional period when both KubeDNS and CoreDNS were deployed parallel, however in latest version only CoreDNS is deployed. As default Minikube is creating 2 pods with CoreDNS. To verify execute: You can also see that there is CoreDNS deployment. Here you can find comparison between both DNS. So in short, you did not miss anything.
To check the version, enter kubectl version. DNS is a built-in Kubernetes service launched automatically using the addon manager cluster add-on. As of Kubernetes v1.12, CoreDNS is the recommended DNS Server, replacing kube-dns.
The kube-dns addon should be enabled by default in minikube. You can run kubectl get po -n kube-system
to check if the pod the addon-manager launches is there. If you don't see the pod listed, make sure that the addon is enabled in minikube by running minikube addons list
and verifying that kube-dns
is enabled
Edit:
For me kubectl get po -n kube-system
is a valid command, here is the output:
$ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
kube-addon-manager-minikube 1/1 Running 2 5d
kube-dns-v20-7ddvt 3/3 Running 6 5d
kubernetes-dashboard-rn54g 1/1 Running 2 5d
You can see from this that the kube-dns pods are running correctly. Can you verify that your kube-dns pods are in the Running
state?
This fix is for VirtualBox drivers only - confirm your driver with
cat ~/.minikube/machines/minikube/config.json | grep DriverName
The accepted answer is correct that kube-dns is installed and enabled by default. But it seems to be a common problem that the pods to manage DNS are not created, making it seem that kube-dns has not been installed.
Eg:
$ kubectl get po -n kube-system
kube-addon-manager-minikube 1/1 Running 1 1m
You can confirm kube-dns is installed and enabled (even though not working) with:
$ minikube addons list
- addon-manager: enabled
- dashboard: enabled
- kube-dns: enabled
{snipped}
The underlying problem is VirtualBox related, as described here: https://forums.virtualbox.org/viewtopic.php?f=7&t=50368
Fix:
minikube stop
VBoxManage modifyvm "VM name" --natdnshostresolver1 on
minikube start
kubectl get all -n kube-system
VM name is probably "minikube". If the last command doesn't return a large list of pods (including kube-dns and kube-dashboard), wait a few moments - I have a few blank results before success.
For Windows users, VBoxManage is installed by default at c:\Program Files\Oracle\VirtualBox
Further information at https://superuser.com/questions/641933
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With