¿Cómo puedo reducir la sobreasignación de recursos de clúster debido a múltiples instancias de Jenkins?
Si una gran organización necesita proporcionar Jenkins a varios equipos, cada equipo o espacio de nombres de la aplicación ejecutará su propia instancia de Jenkins. Esto asigna muchos recursos informáticos cuando el número de instancias crece hasta cientos y a menudo no se utilizan al máximo.
¿Cuáles son las mejores soluciones para abordar este problema? Tengo algunas ideas que aún no he investigado por completo:
- Reducir las solicitudes/límites predeterminados de CPU/memoria en la plantilla de OpenShift Jenkins (en el catálogo). Preocupación: pueden sobrescribirse en la implementación.
- Usar una instancia central compartida de Jenkins. Preocupación: es posible que no haya suficiente aislamiento o control a través de RBAC para aislar los equipos en sus propios proyectos/pipelines.
- Compartir agentes de Jenkins, seguir implementando maestros separados para equipos/aplicaciones. Preocupación: no seguro si es posible o aumenta drásticamente la complejidad.
- Aprovechar el escalado automático vertical del pod (VPA) para ajustar dinámicamente las solicitudes de pods de Jenkins. Preocupación: no seguro si esto mejoraría el problema.
- Simplemente reducir las Reglas de recursos generales del proyecto, especialmente reduciendo las solicitudes y confiando más en los límites. Preocupación: mayor riesgo de situaciones OOM.
davy.ai
¿Qué crees que es la mejor solución para abordar este problema?