CertGrid CertGrid
Hands-on Lab·Kubernetes and Cloud Native Associate

DaemonSets and Node Eligibility

"A DaemonSet runs one Pod on every node" is the definition everyone learns and it is not what the controller does. It runs one Pod on every node that will accept one, and the number it reports as DESIRED is the result of that filtering rather than a count of your nodes. Four nodes, three Pods, and the missing one explained and then fixed.

Scheduling and Placement Guide 16 of 46 Beginner

DaemonSet Pods are scheduled by the default scheduler and are subject to taints like anything else. They do get some tolerations added automatically - node.kubernetes.io/disk-pressure, unschedulable and similar - so that a node agent is not evicted by the conditions it exists to report on. The control-plane taint is not among them.

The count is the point of this guide, so all four nodes are listed: one control plane and three workers, which is why the numbers below are 3 and then 4.
Server NameIP AddressOSRolesCPURAMHDD
CKA1001192.168.0.175Ubuntu 26.04 LTSControl Plane Node2 Core4 GB50 GB
CKA1001-NODE01192.168.0.176Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA1001-NODE02192.168.0.177Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA1001-NODE03192.168.0.178Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB

This guide includes

Use this when a DaemonSet reports fewer Pods than the cluster has nodes and nothing looks broken. This matters because "one Pod on every node" is the definition everyone learns and not what the controller does - eligibility is decided by taints.

Before you start

  1. One per node, supposedly

  2. The node that said no

  3. Tolerate it and count again

Official sources