Middle
Kubernetesте DaemonSetтин практик колдонулушу кандай?
sobes.tech AI
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 автоматтык түрдө жаңы узулардын үстүнө под кошуп, узулардын класттан чыгышы менен алынып салат.