Middle
¿En qué consiste la diferencia entre Deployment y DaemonSet en Kubernetes?
sobes.tech AI
Respuesta de la IA
Deployment gestiona un conjunto de réplicas de Pods, asegurando la cantidad requerida y el escalado automático. Es adecuado para la mayoría de las aplicaciones sin estado.
DaemonSet garantiza que una copia del Pod se ejecute en cada nodo (o en un subconjunto de nodos, según el selector) del clúster. Se usa para tareas en segundo plano, como recopilación de logs o monitoreo.
Aquí están las diferencias clave:
| Característica | Deployment | DaemonSet |
|---|---|---|
| Objetivo | Mantener un número definido de réplicas de Pods | Ejecutar un Pod en cada nodo (o subconjunto) |
| Número de Pods | Controlado por el parámetro replicas |
Determinado por el número de nodos |
| Escalado | Horizontal, bajo demanda | Relacionado con agregar/eliminar nodos |
| Ejemplos de uso | Servidores web, microservicios | Recolectores de logs, agentes de monitoreo, demonios de red |
| Actualización | Gradual (actualización continua) o reemplazo | Se actualiza automáticamente en los nodos según sea necesario |
Ejemplo de manifiesto para Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Ejecutar 3 copias del Pod
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Ejemplo de manifiesto para DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Etiqueta para el selector de Pods
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Imagen para el recolector de logs
# Configuraciones adicionales para acceder a archivos de logs, etc.
tolerations:
# A menudo necesario para ejecutar en nodos master
- key: node-role.kubernetes.io/master
effect: NoSchedule