DaemonSet (Kubernetes)

⌘K

DaemonSet (Kubernetes)

DaemonSet — это контроллер в Kubernetes, который гарантирует, что на каждом узле кластера запущен один экземпляр определённого пода. Такой подход используется для системных сервисов и агентов, которые должны работать повсеместно, независимо от нагрузки или числа приложений.


Особенности DaemonSet

  1. Один под на узел
    Каждый узел автоматически получает «свою» копию пода. Если узел добавляется в кластер — DaemonSet создаёт под и на нём. Если узел удаляется — под исчезает вместе с ним.
  2. Централизованное управление
    Администратор описывает DaemonSet в YAML, а Kubernetes сам следит, чтобы все узлы были покрыты.
  3. Гибкость размещения
    С помощью nodeSelector, affinity и tolerations можно задать, на каких узлах должны или не должны запускаться поды DaemonSet.
  4. Обновления
    Поддерживается RollingUpdate: обновления агентов проходят постепенно, без остановки всего кластера.

Примеры использования

  • Мониторинг и метрики: Prometheus Node Exporter, Datadog Agent.
  • Сбор логов: Fluentd, Filebeat.
  • Сетевые плагины: Calico, Cilium, Weave Net.
  • Системные агенты: инструменты безопасности, антивирусные или compliance-агенты.

Пример конфигурации DaemonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  labels:
    app: monitoring
spec:
  selector:
    matchLabels:
      app: monitoring
  template:
    metadata:
      labels:
        app: monitoring
    spec:
      containers:
      - name: node-exporter
        image: prom/node-exporter:v1.7.0
        ports:
        - containerPort: 9100
          hostPort: 9100

Для клиента

DaemonSet гарантирует, что ключевые системные сервисы (логирование, метрики, безопасность) всегда работают на каждом узле. Это снижает риск «слепых зон» в мониторинге и обеспечивает предсказуемость инфраструктуры.


Важно: DaemonSet не подходит для бизнес-приложений — он создан именно для инфраструктурных агентов, которые должны быть повсеместно.