Middle
204
questionbank
Каково практическое применение DaemonSet в Kubernetes?
Answer from AI
sobes.tech AI
DaemonSet гарантирует, что под копия запущена на всех (или на указанном подмножестве) узлах кластера. Это полезно для развертывания системных демонов, которые должны работать на каждом узле.
Практические применения:
- Сбор логов: Запуск агента сбора логов (например, Fluentd, Logstash) на каждом узле для передачи логов в централизованное хранилище.
- Мониторинг узлов: Развертывание агента мониторинга (например, Prometheus Node Exporter, Datadog Agent) на каждом узле для сбора метрик состояния узла.
- Кластерное хранилище: Запуск демона хранилища (например, Ceph, Glusterfs) на каждом узле для обеспечения распределенного хранения.
- Агенты безопасности: Развертывание агентов безопасности или аудита на каждом узле.
Отличие от Deployment: DaemonSet создает под на каждом узле, тогда как Deployment стремится поддерживать заданное количество реплик по всему кластеру, распределяя их по доступным узлам.
Пример манифеста DaemonSet для агента сбора логов:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: fluentd/fluentd-kubernetes-daemonset:v1.14-debian-elasticsearch7-1
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch.default.svc.cluster.local" # Пример адреса Elasticsearch
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
- name: FLUENT_ELASTICSEARCH_SCHEME
value: "http"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
DaemonSet автоматически добавляет под на новые узлы и удаляет его при удалении узла из кластера.