DaemonSet — это контроллер в Kubernetes, который гарантирует, что на каждом узле кластера запущен один экземпляр определённого пода. Такой подход используется для системных сервисов и агентов, которые должны работать повсеместно, независимо от нагрузки или числа приложений.
Особенности DaemonSet
- Один под на узел
Каждый узел автоматически получает «свою» копию пода. Если узел добавляется в кластер — DaemonSet создаёт под и на нём. Если узел удаляется — под исчезает вместе с ним. - Централизованное управление
Администратор описывает DaemonSet в YAML, а Kubernetes сам следит, чтобы все узлы были покрыты. - Гибкость размещения
С помощью,nodeSelector
иaffinity
можно задать, на каких узлах должны или не должны запускаться поды DaemonSet.tolerations
- Обновления
Поддерживается 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 не подходит для бизнес-приложений — он создан именно для инфраструктурных агентов, которые должны быть повсеместно.