Sobes.tech
Middle

Aký je praktický význam DaemonSet v Kubernetes?

sobes.tech AI

Odpoveď od AI

DaemonSet zabezpečuje, že pod je spustený na všetkých (alebo na vybranom podmnožine) uzloch klastru. Je to užitočné pre nasadenie systémových démonov, ktoré musia bežať na každom uzle.

Praktické použitia:

  • Zber logov: Spustenie agenta na zber logov (napríklad Fluentd, Logstash) na každom uzle na odosielanie logov do centralizovaného úložiska.
  • Monitorovanie uzlov: Nasadenie monitorovacieho agenta (napríklad Prometheus Node Exporter, Datadog Agent) na každom uzle na zber metrík stavu uzla.
  • Klastrové úložisko: Spustenie démona úložiska (napríklad Ceph, Glusterfs) na každom uzle na zabezpečenie distribuovaného úložiska.
  • Bezpečnostní agenti: Nasadenie bezpečnostných alebo auditovacích agentov na každom uzle.

Rozdiel od Deployment: DaemonSet vytvára pod na každom uzle, zatiaľ čo Deployment sa snaží udržať požadovaný počet replík po celom klastre, rozdeľujúc ich medzi dostupné uzly.

Príklad manifestu DaemonSet pre agenta zberu logov:

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" # Prí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áva pod na nové uzly a odstraňuje ho pri odstránení uzla z klastru.