Sobes.tech
Middle

Jaké je praktické využití DaemonSet v Kubernetes?

sobes.tech AI

Odpověď od AI

DaemonSet zajišťuje, že na všech (nebo na určené podmnožině) uzlech clusteru běží pod. To je užitečné pro nasazení systémových démonů, kteří musí běžet na každém uzlu.

Praktické použití:

  • Sběr logů: Spuštění agenta pro sběr logů (například Fluentd, Logstash) na každém uzlu pro přenos logů do centralizovaného úložiště.
  • Monitorování uzlů: Nasazení monitorovacího agenta (například Prometheus Node Exporter, Datadog Agent) na každý uzel pro sběr metrik o stavu uzlu.
  • Clusterové úložiště: Spuštění démona úložiště (například Ceph, Glusterfs) na každý uzel pro zajištění distribuovaného úložiště.
  • Bezpečnostní agenti: Nasazení bezpečnostních nebo auditovacích agentů na každý uzel.

Rozdíl od Deployment: DaemonSet vytvoří na každém uzlu pod, zatímco Deployment se snaží udržovat pevně stanovený počet replik v celém clusteru a rozděluje je mezi dostupné uzly.

Příklad manifestu DaemonSet pro agenta sběru logů:

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" # Příklad adresy 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 automaticky pridá pod na každý nový uzol a odstráni ho, keď je uzol odstránený zo clusteru.