<p>Hoping someone can help.
I have a 3x node CoreOS cluster running Kubernetes. The nodes are as follows:
192.168.1.201 - Controller
192.168.1.202 - Worker Node
192.168.1.203 - Worker Node</p>

<p>The cluster is up and running, and I can run the following commands:</p>

<pre><code>&gt; kubectl get nodes

NAME            STATUS                     AGE
192.168.1.201   Ready,SchedulingDisabled   1d
192.168.1.202   Ready                      21h
192.168.1.203   Ready                      21h

&gt; kubectl get pods --namespace=kube-system

NAME                                    READY     STATUS             RESTARTS   AGE
kube-apiserver-192.168.1.201            1/1       Running            2          1d
kube-controller-manager-192.168.1.201   1/1       Running            4          1d
kube-dns-v20-h4w7m                      2/3       CrashLoopBackOff   15         23m
kube-proxy-192.168.1.201                1/1       Running            2          1d
kube-proxy-192.168.1.202                1/1       Running            1          21h
kube-proxy-192.168.1.203                1/1       Running            1          21h
kube-scheduler-192.168.1.201            1/1       Running            4          1d
</code></pre>

<p>As you can see, the kube-dns service is not running correctly. It keeps restarting and I am struggling to understand why. Any help in debugging this would be greatly appreciated (or pointers at where to read about debugging this. Running kubectl logs does not bring anything back...not sure if the addons function differently to standard pods.</p>

<p>Running a kubectl describe pods, I can see the containers are killed due to being unhealthy:</p>

<pre><code>16m           16m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Created         Created container with docker id 189afaa1eb0d; Security:[seccomp=unconfined]
16m           16m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Started         Started container with docker id 189afaa1eb0d
14m           14m             1       {kubelet 192.168.1.203} spec.containers{kubedns}        Normal          Killing         Killing container with docker id 189afaa1eb0d: pod "kube-dns-v20-h4w7m_kube-system(3a545c95-ea19-11e6-aa7c-52540021bfab)" container "kubedns" is unhealthy, it will be killed and re-created
</code></pre>

<p>Please find a full output of this command as a github gist here: <a href="https://gist.github.com/mehstg/0b8016f5398a8781c3ade8cf49c02680" rel="nofollow noreferrer">https://gist.github.com/mehstg/0b8016f5398a8781c3ade8cf49c02680</a></p>

<p>Thanks in advance!</p>

<p>If you installed your cluster with kubeadm you should add a pod network after installing.</p>

<p>If you choose flannel as your pod network, you should have this argument in your init command <code>kubeadm init --pod-network-cidr 10.244.0.0/16</code>.</p>

<p>The flannel YAML file can be found in the <a href="https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml" rel="nofollow noreferrer">coreOS flannel repo</a>. </p>

<p>All you need to do if your cluster was initialized properly (read above), is to run <code>kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml</code></p>

<p>Once this is up and running (it will create pods on every node), your kube-dns pod should come up.</p>

<p>If you need to reset your installation (for example to add the argument to <code>kubeadm init</code>), you can use <code>kubeadm reset</code> on all nodes.</p>

<p>Normally, you would run the init command on the master, then add a pod network, and then add your other nodes.</p>

<p>This is all described in more detail in the <a href="https://kubernetes.io/docs/getting-started-guides/kubeadm/" rel="nofollow noreferrer">Getting started guide</a>, step 3/4 regarding the pod network.</p>
