Русская версия

KubeDaemonSetNotReady: what to do when it fires

Alert rule

alert: KubeDaemonSetNotReady
expr: kube_daemonset_status_desired_number_scheduled
  - kube_daemonset_status_number_ready > 0
for: 15m
severity: warning

Alert message: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }}: pods are not ready on all nodes

What it means

A DaemonSet has had fewer ready Pods than it should (one per eligible node) for 15 minutes.

Common causes

A node is unavailable or NotReady, a taint on the node without a toleration, a shortage of resources on the node, a Pod crashing on a specific node (kernel/OS specifics).

Diagnostics

kubectl -n <ns> get ds <name>
kubectl -n <ns> get pods -l <selector-labels> -o wide
kubectl -n <ns> describe ds <name>
kubectl -n <ns> logs <pod-on-problem-node> --previous
kubectl describe node <node> | grep -i -A5 taints

How to fix

Fix the cause on the specific nodes: bring the node back, add a toleration, free resources. If a node is being retired from the cluster, remove it with kubectl delete node.

When it is OK to silence

During node drain/upgrade.

Related alerts

The full pack of 44 tested rules + Alertmanager → Telegram: 790 ₽ (≈ $9, card payment in rubles)
Open in Telegram · Free Monitoring Lite kit · All runbook alerts