Jenkins slaves: escalado horizontal de jobs
Clase 13 de 15 • Curso Básico de Jenkins
Contenido del curso
Jenkins Core
Jobs
Plugins
Pipelines
Slave
Cierre
Domina cómo escalar Jenkins con Jenkins Slaves para ejecutar jobs en paralelo y sin cuellos de botella. Aquí entenderás cuándo el master ya no alcanza, cómo funcionan los executioners y por qué un clúster de slaves de distintos tamaños te da control, rendimiento y flexibilidad.
¿Qué es un Jenkins slave y para qué sirve?
Un slave se conecta al Jenkins master y este le delegará trabajos como si fuera el propio master, pero corriendo en otra máquina: puede ser virtual o física. Aunque el nombre no guste, el concepto es clave para escalar horizontalmente.
- Unidad de trabajo: el job es la unidad básica que Jenkins ejecuta.
- Delegación: el master asigna jobs a slaves conectados.
- Independencia de hardware: cada slave es un nodo separado.
- Escalado horizontal: agregas más slaves según la demanda.
Habilidad: decidir qué jobs conviene mover a slaves para mejorar throughput.
¿Cuándo usar múltiples executioners y cuándo no alcanza el master?
Jenkins puede tener múltiples executioners en el master para correr varios jobs en paralelo. Sin embargo, hay un límite práctico donde conviene distribuir la carga a slaves.
¿Qué límites imponen el CPU y el manejo de Jenkins?
- Cargas intensivas de CPU: algunos jobs demandan demasiado cómputo para un solo nodo.
- Demasiados jobs simultáneos: el CPU no da abasto y el sistema se satura.
- Sobrecarga de orquestación: no es solo CPU; también es demasiado para que Jenkins lo maneje eficientemente.
Dato clave: existe un límite de cuántos CPU puedes asignar a una sola máquina y de cuánto quieres pagar por ese hardware.
¿Por qué separar permisos del master ayuda?
- Menor exposición: quizá no quieras dar todos los permisos al Jenkins master.
- Aislamiento por seguridad: ejecutas jobs en slaves con permisos acotados.
- Control por tipo de carga: defines qué se ejecuta y dónde, con mayor granularidad.
Keyword: delegación de trabajos desde el master hacia slaves conectados.
¿Cómo escalar horizontalmente con un pool de slaves?
La estrategia recomendada es formar un pool o clúster de slaves de diferentes tamaños, asignados a sus distintas workloads.
- Nodos pequeños: para jobs cortos o poco intensivos.
- Nodos grandes: para cargas más computacionalmente intensivas.
- Asignación dirigida: envías cada job al slave más adecuado.
- Paralelismo real: varios jobs corren a la vez sin competir por el mismo CPU.
- Costo-eficiencia: compras o asignas solo lo necesario para cada carga.
Conceptos: job como unidad de trabajo, executioners para paralelismo en el master, slaves para distribución, y clúster para escalar sin depender de un único nodo.
¿Tú cómo organizas tu clúster de slaves en Jenkins y qué criterios usas para asignar jobs? Comparte tu experiencia en los comentarios.