如何减少由于多个 Jenkins 实例导致的集群资源过度分配?

How can I reduce over-allocation of cluster resources due to multiple Jenkins instances?

如果大型组织需要为多个团队提供 Jenkins,每个团队或应用程序 namespace 将 运行 自己的 Jenkins 实例。当实例数量增长到数百个并且经常未得到充分利用时,这会分配大量计算资源。

解决此问题的最佳解决方案是什么?我有一些我还没有完全研究过的想法:

  1. 减少 OpenShift Jenkins 模板(在目录中)中的默认值 CPU/memory requests/limits关注:这些可能会在部署时被覆盖。
  2. 使用中央共享 Jenkins 实例。 担忧:可能没有足够的隔离或通过 RBAC 控制来将团队隔离到他们自己的 projects/pipelines。
  3. 共享 Jenkins 代理,继续为 teams/applications 部署单独的主服务器。 担忧:不确定这是否可行或是否会大大增加复杂性。
  4. 利用垂直 pod 自动缩放 (VPA) 动态调整 Jenkins pods 请求。 担忧:不确定这是否会改善问题。
  5. 简单地减少整个项目的ResourceQuotas,特别是降低请求并更多地依赖限制。 担忧OOM 情况的风险增加。

我采用了 5 方法,因为它的破坏性最小。

可以找到完整的详细信息 here