如何减少由于多个 Jenkins 实例导致的集群资源过度分配?
How can I reduce over-allocation of cluster resources due to multiple Jenkins instances?
如果大型组织需要为多个团队提供 Jenkins,每个团队或应用程序 namespace
将 运行 自己的 Jenkins 实例。当实例数量增长到数百个并且经常未得到充分利用时,这会分配大量计算资源。
解决此问题的最佳解决方案是什么?我有一些我还没有完全研究过的想法:
- 减少 OpenShift Jenkins 模板(在目录中)中的默认值 CPU/memory
requests
/limits
。 关注:这些可能会在部署时被覆盖。
- 使用中央共享 Jenkins 实例。 担忧:可能没有足够的隔离或通过 RBAC 控制来将团队隔离到他们自己的 projects/pipelines。
- 共享 Jenkins 代理,继续为 teams/applications 部署单独的主服务器。 担忧:不确定这是否可行或是否会大大增加复杂性。
- 利用垂直 pod 自动缩放 (VPA) 动态调整 Jenkins pods 请求。 担忧:不确定这是否会改善问题。
- 简单地减少整个项目的ResourceQuotas,特别是降低请求并更多地依赖限制。 担忧:
OOM
情况的风险增加。
我采用了 5 方法,因为它的破坏性最小。
可以找到完整的详细信息 here。
如果大型组织需要为多个团队提供 Jenkins,每个团队或应用程序 namespace
将 运行 自己的 Jenkins 实例。当实例数量增长到数百个并且经常未得到充分利用时,这会分配大量计算资源。
解决此问题的最佳解决方案是什么?我有一些我还没有完全研究过的想法:
- 减少 OpenShift Jenkins 模板(在目录中)中的默认值 CPU/memory
requests
/limits
。 关注:这些可能会在部署时被覆盖。 - 使用中央共享 Jenkins 实例。 担忧:可能没有足够的隔离或通过 RBAC 控制来将团队隔离到他们自己的 projects/pipelines。
- 共享 Jenkins 代理,继续为 teams/applications 部署单独的主服务器。 担忧:不确定这是否可行或是否会大大增加复杂性。
- 利用垂直 pod 自动缩放 (VPA) 动态调整 Jenkins pods 请求。 担忧:不确定这是否会改善问题。
- 简单地减少整个项目的ResourceQuotas,特别是降低请求并更多地依赖限制。 担忧:
OOM
情况的风险增加。
我采用了 5 方法,因为它的破坏性最小。
可以找到完整的详细信息 here。