Sobes.tech
Middle

Wat is de praktische toepassing van DaemonSet in Kubernetes?

sobes.tech AI

Antwoord van AI

DaemonSet zorgt ervoor dat een pod wordt uitgevoerd op alle (of een opgegeven subset van) knooppunten in het cluster. Dit is handig voor het uitrollen van systeem-daemons die op elke knoop moeten draaien.

Praktische toepassingen:

  • Logverzameling: Het uitvoeren van een logverzamelagent (bijvoorbeeld Fluentd, Logstash) op elke knoop om logs naar een gecentraliseerde opslag te sturen.
  • Knoopmonitoring: Het uitrollen van een monitoringagent (bijvoorbeeld Prometheus Node Exporter, Datadog Agent) op elke knoop om de statusmetingen van de knoop te verzamelen.
  • Clusteropslag: Het uitvoeren van een opslagdaemon (bijvoorbeeld Ceph, Glusterfs) op elke knoop om gedistribueerde opslag te garanderen.
  • Beveiligingsagents: Het uitrollen van beveiligings- of auditagents op elke knoop.

Verschil met Deployment: DaemonSet maakt een pod op elke knoop, terwijl Deployment probeert een vastgesteld aantal replicas in het hele cluster te behouden en deze over de beschikbare knopen te verdelen.

Voorbeeld van een DaemonSet-manifest voor een logverzamelagent:

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" # Voorbeeldadres 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 voegt automatisch een pod toe op nieuwe knooppunten en verwijdert deze wanneer een knooppunt uit het cluster wordt verwijderd.