Sobes.tech
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 автоматтык түрдө жаңы узулардын үстүнө под кошуп, узулардын класттан чыгышы менен алынып салат.