Sobes.tech
Middle

¿Cuál es la aplicación práctica de DaemonSet en Kubernetes?

sobes.tech AI

Respuesta de la IA

DaemonSet garantiza que un pod se ejecute en todos (o en un subconjunto especificado) de los nodos del clúster. Esto es útil para desplegar demonios del sistema que deben funcionar en cada nodo.

Aplicaciones prácticas:

  • Recolección de logs: Ejecutar un agente de recolección de logs (por ejemplo, Fluentd, Logstash) en cada nodo para enviar logs a un almacenamiento centralizado.
  • Monitoreo de nodos: Desplegar un agente de monitoreo (por ejemplo, Prometheus Node Exporter, Datadog Agent) en cada nodo para recopilar métricas del estado del nodo.
  • Almacenamiento en clúster: Ejecutar un demonio de almacenamiento (por ejemplo, Ceph, Glusterfs) en cada nodo para garantizar un almacenamiento distribuido.
  • Agentes de seguridad: Desplegar agentes de seguridad o auditoría en cada nodo.

Diferencia con Deployment: DaemonSet crea un pod en cada nodo, mientras que Deployment intenta mantener un número definido de réplicas en todo el clúster, distribuyéndolos entre los nodos disponibles.

Ejemplo de manifiesto de DaemonSet para un agente de recolección de logs:

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" # Ejemplo de dirección de 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 añade automáticamente un pod en los nuevos nodos y lo elimina cuando un nodo se elimina del clúster.