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.