Sobes.tech
Middle

Jaki jest praktyczny zastosowanie DaemonSet w Kubernetes?

sobes.tech AI

Odpowiedź od AI

DaemonSet zapewnia, że pod jest uruchomiony na wszystkich (lub wybranej podzbiorze) węzłach klastra. Jest to przydatne do wdrażania demonów systemowych, które muszą działać na każdym węźle.

Praktyczne zastosowania:

  • Zbieranie logów: Uruchom agenta zbierającego logi (np. Fluentd, Logstash) na każdym węźle, aby przesyłać logi do scentralizowanego magazynu.
  • Monitorowanie węzłów: Wdrażanie agenta monitorującego (np. Prometheus Node Exporter, Datadog Agent) na każdym węźle w celu zbierania metryk stanu węzła.
  • Przechowywanie w klastrze: Uruchom demon przechowywania (np. Ceph, Glusterfs) na każdym węźle, aby zapewnić rozproszone przechowywanie.
  • Agenci bezpieczeństwa: Wdrażanie agentów bezpieczeństwa lub audytu na każdym węźle.

Różnica od Deployment: DaemonSet tworzy pod na każdym węźle, podczas gdy Deployment stara się utrzymać określoną liczbę replik w całym klastrze, rozkładając je po dostępnych węzłach.

Przykład manifestu DaemonSet dla agenta zbierania logów:

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" # Przykład adresu 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 automatycznie dodaje pod na nowych węzłach i usuwa go, gdy węzeł zostanie usunięty z klastra.