<p>I am running a cluster with 1 master and 1 node. Now, when I run daemon set it only shows 1 desired node, while it should be 2. There is no error I could find anywhere in the describe/logs, but the daemonset only chooses 1 node to run. I am using kubernetes 1.9.1. </p>

<p>Any idea what I can be doing wrong? Or how to debug it?
TIA.</p>

<p>This happens if the k8s master node has just the <code>node-role.kubernetes.io/master: NoSchedule</code> taint without toleration for it.</p>

<p>The <code>the node-role.kubernetes.io/master: NoSchedule</code> toleration is needed in k8s 1.6 or later to schedule daemonsets on master nodes.</p>

<p>Add the following toleration for the daemonset in the YAML file to make k8s schedule daemonsets on the master node too:</p>

<pre><code>...
kind: DaemonSet
spec:
  ...
  template:
   ...
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
</code></pre>

<p>Taints of the master node can be checked by:</p>

<pre><code>kubectl describe node &lt;master node&gt;
</code></pre>

<p>Tolerations of a pod can be checked by:</p>

<pre><code>kubectl describe pod &lt;pod name&gt;
</code></pre>

<p>More info about daemonsets is in <a href="https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/" rel="noreferrer">https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/</a>.</p>
