Sobes.tech
Middle

Какво е практическото приложение на DaemonSet в Kubernetes?

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 автоматично добавя под на всеки нов възел и го премахва, когато възел бъде премахнат от клъстера.