DaemonSets y StatefulSets
Clase 12 de 24 • Curso de Kubernetes
Contenido del curso
Clase 12 de 24 • Curso de Kubernetes
Contenido del curso
Ronald Cuello
Joseph Felipe Grijalva Lozano
Oier Solabarrieta Egues
Luis Rogelio Reyes Hernandez
Compañeros, aquí está un resumen claro de los conceptos que el profesor explicó. Espero que les ayude a entender mejor
Pod = Unidad Básica
• Es lo más pequeño en Kubernetes
• Contiene uno o más contenedores que se escalan juntos
• Son EFÍMEROS (se pueden eliminar y recrear)
══════
🚀 LOS 3 TIPOS DE WORKLOADS
1. DEPLOYMENT 📌 Para aplicaciones web normales
✅ Uso: Aplicaciones sin estado (APIs, sitios web)
✅ Ventaja: Fácil de escalar y gestionar
❌ Limitación: Los pods son intercambiables, pierden datos al reiniciar
💡 Ejemplo: Una API REST que no guarda datos importantes
2. STATEFULSET 📌 Para aplicaciones que NECESITAN guardar datos
✅ Uso: Bases de datos, aplicaciones con estado
✅ Ventaja: Cada pod tiene su propio almacenamiento permanente
✅ Extra: Cada pod tiene un nombre DNS único y estable (<pod-name>.<service-name>.<namespace>.svc.cluster.local)
💡 Ejemplo: MySQL, PostgreSQL, MongoDB
3. DAEMONSET 📌 Para servicios que deben estar en TODOS los nodos
✅ Uso: Monitoreo, logging, servicios de sistema
✅ Ventaja: Se ejecuta automáticamente en cada servidor del cluster
✅ Auto-escala: Si agregas un servidor, se instala automáticamente
💡 Ejemplo: Agente de monitoreo como Prometheus
═════
🤔 ¿CUÁL USAR? - GUÍA RÁPIDA
¿Mi aplicación guarda datos importantes?
NO → DEPLOYMENT
SÍ → STATEFULSET
¿Necesito que algo corra en CADA servidor?
SÍ → DAEMONSET
════
📊 TABLA COMPARATIVA RÁPIDA
DEPLOYMENT STATEFULSET DAEMONSET
Datos: Se pierden Se mantienen Depende
Escalamiento: Manual Manual Automático
Identidad: Intercambiable Única Una por nodo
Uso típico: Web apps Bases de datos Agentes/Monitoreo
═════
💡 EJEMPLOS DEL MUNDO REAL
DEPLOYMENT:
• Sitio web de e-commerce
• API de usuarios
• Frontend de React/Vue
STATEFULSET:
• Base de datos MySQL
• Sistema de colas como Kafka
• Elasticsearch cluster
DAEMONSET:
• Antivirus en cada servidor
• Recolector de logs
• Agente de backup
════
Dejo una analogia usando IA sobre daemonset y statefulSet
Imagina que Kubernetes es un hotel grande.
🔹 DaemonSet = servicios del hotel (uno por piso)
Piensa en:
Pregunta: ¿Cada piso del hotel necesita su propio sensor de humo?
👉 Sí. ¿Tiene sentido poner dos sensores en el mismo piso y ninguno en otro?
👉 No.
Qué pasa si:
📌 Eso es un DaemonSet:
🔹 StatefulSet = habitaciones numeradas
Ahora piensa en las habitaciones del hotel:
Pregunta: Si el huésped de la 101 sale y vuelve…
👉 ¿le das otra habitación cualquiera o 👉 ¿le devuelves la 101 con sus cosas?
👉 La misma.
📌 Eso es un StatefulSet:
app-0, app-1)Muy buena explicación de como aplicar y utilizar los deamonsets y statefulsets, así como en que casos utilizarlos y sus limitaciones. Sin embargo, siento que le falto más detalle a la explicación de qué son estos objetos :(
Los daemonset contienen un deployment?
¡Qué tal, Luis Rogelio! No, no se contienen. De hecho, son como dos herramientas distintas en la misma caja: ambos son controladores, pero tienen naturalezas opuestas.
Un Deployment es el encargado de escalar; su trabajo es garantizar que un número determinado de réplicas de tus pods esté vivo, generalmente para servir tráfico según la demanda. Es como tener varios cajeros en un banco: si hay mucha gente, abres más ventanillas.
Un DaemonSet es un "siempre presente": asegura que una copia de un pod específico corra en todos los nodos (o en los que tú elijas) del clúster. Es como el sistema de seguridad del banco: no importa cuánta gente haya, siempre tiene que haber un sensor en cada esquina.
Son primos, no padre e hijo. ¿Ves por qué intentar meter uno dentro del otro sería como intentar usar un martillo para clavar un tornillo?