<p>I'm wondering if a daemonset in kubernetes will always be deployed to all nodes. </p>

<p>My confusion comes from the following description of a daemonset</p>

<blockquote>
  <p>A DaemonSet makes sure that all <strong>or some</strong> kubernetes Nodes run a copy of a Pod.</p>
</blockquote>

<p>The "or some" part, implies that there are cases when some nodes won't run a pod. For my use case it would be important that all nodes would run an instance. What are the cases in which a node won't run an instance of a pod, even though it is deployed as a daemonset?</p>

<p>It depends on which target of nodes are selected. </p>

<blockquote>
  <p>If you specify a .spec.template.spec.nodeSelector, then the DaemonSet controller will create Pods on nodes which match that node selector. Likewise if you specify a .spec.template.spec.affinity, then DaemonSet controller will create Pods on nodes which match that node affinity. If you do not specify either, then the DaemonSet controller will create Pods on all nodes.<a href="https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#running-pods-on-only-some-nodes" rel="nofollow noreferrer">DaemonSet</a></p>
</blockquote>

<p>Also I would  check the <a href="https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#taints-and-tolerations" rel="nofollow noreferrer">taint and toleration</a> for Daemonset. </p>
