9.2 DaemonSets

El objeto DaemonSet (DS) se utiliza cuando queremos ejecutar un pod en todos los nodos del cluster o al menos en un conjunto de ellos que tienen una serie de características en común. Un DaemonSet se utiliza en algunas circunstancias muy concretas, por ejemplo:

  • Ejecutar un pod en cada nodo para la monitorización del cluster: Prometheus, Sysdig, collectd, datadog, etc.
  • Ejecutar un pod en cada nodo para la recolección y gestión de logs: fluentd, logstash
  • Ejecutar un pod en cada nodo para el almacenamiento del cluster: ceph o glusterfs

Un ejemplo de DaemonSet tendría el siguiente aspecto:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset1
spec:
  selector:
      matchLabels:
        name: daemonset-pod 
  template:               # Plantilla con las características del Pod
    metadata:
      labels:
        name: daemonset-pod 
    spec:
      nodeSelector:
        type: worker-prod # Etiqueta del nodo en el que se ejecuta (opcional)
      containers:
      - name: daemon-pod
        image: ...

Los parámetros tienen los valores habituales anteriormente descritos y en este caso, se incluye una plantilla con la descripción del pod que se ejecutará en cada nodo (en este caso en cada nodo con etiqueta worker-prod).