Ответ
В DaemonSet концепция "реплик" (как в Deployment или StatefulSet, где вы задаете replicas: 5) отсутствует. Вместо этого DaemonSet гарантирует запуск одного идентичного пода на каждом узле (Node) в кластере, который соответствует его селектору узлов (.spec.template.spec.nodeSelector).
Как это работает с точки зрения DevOps/администрирования:
- Автоматическое масштабирование: Если вы добавляете новый узел в кластер, контроллер DaemonSet автоматически создаст на нем под. Если узел удаляется — под также удаляется.
- Использование: Это идеально для системных демонов, которые должны быть на каждой машине: агенты сбора логов (Fluentd, Filebeat), агенты мониторинга (node-exporter), сетевые плагины (Calico, Cilium) или утилиты для хранения (glusterd).
- Проверка состояния: Команда
kubectl get daemonsetпоказывает колонкиDESIRED,CURRENT,READY.DESIRED— это количество узлов, подходящих под селектор.
Пример манифеста для развертывания агента мониторинга на всех узлах:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
spec:
selector:
matchLabels:
name: node-exporter
template:
metadata:
labels:
name: node-exporter
spec:
hostNetwork: true
hostPID: true
containers:
- name: node-exporter
image: prom/node-exporter:latest
ports:
- containerPort: 9100
Таким образом, количество "реплик" равно динамическому количеству подходящих узлов в кластере.