Ответ
Deployment и DaemonSet — это контроллеры для управления подами, но с разной логикой репликации.
| Критерий | Deployment | DaemonSet |
|---|---|---|
| Цель | Запуск реплицированного stateless-приложения (например, веб-сервер). | Запуск системного демона на каждом (или группе) узлов (например, агент для сбора логов). |
| Логика размещения | Поды планируются на доступные узлы исходя из ресурсов и правил (affinity/anti-affinity). | Гарантирует, что копия пода будет работать на каждом узле, соответствующем селектору. |
| Использование | Основная рабочая нагрузка приложений. | Фоновые сервисы инфраструктуры: сбор логов (Fluentd), мониторинг (Node Exporter), сетевая политика (Calico). |
Пример DaemonSet для развертывания агента мониторинга на каждом узле:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
spec:
selector:
matchLabels:
app: node-exporter
template:
metadata:
labels:
app: node-exporter
spec:
hostNetwork: true
hostPID: true
containers:
- name: exporter
image: prom/node-exporter:latest
ports:
- containerPort: 9100