Red Hat Bugzilla – Bug 1473474
[RFE] Add new feature in global build override config to support builder pods specific resource limit/request more than project default
Last modified: 2018-02-11 10:58:48 EST
3. What is the nature and description of the request?
To have global build override config to override the default limits/request at namespace level.
4. Why does the customer need this? (List the business requirements here)
To improve the performance on builder pods
5. How would the customer like to achieve this? (List the functional requirements here)
To override the namespace default limits/requests for builder pods
6. For each functional requirement listed, specify how Red Hat and the customer can test to confirm the requirement is successfully implemented.
7. Is there already an existing RFE upstream or in Red Hat Bugzilla?
10. List any affected packages or components.
Does https://docs.openshift.org/latest/install_config/build_defaults_overrides.html#ansible-setting-global-build-defaults not accomplish what you need? I believe setting up a global default for build resources will take effect before the namespace default is applied.
I think it doesn't achieve the customer's demand. The customer wants to do something like the following:
- All pods except build pods will run on the node with region=primary.
- All build pods will run on the node with region=build
- region=primary and region=build are exclusive.
I think it's still impossible. If you have an idea, could you tell us?
That(controlling build pod placement) has nothing to do with the subject+summary of this bug, which is about specifying resource limits/requests.
In any case that is possible using taints+tolerations+nodeselectors.
Unfortunately build toleration support was alpha and got removed in 3.7, however we are restoring it as a first class feature in 3.9:
You will therefore be able to:
1) create nodes with region=build and region=app label, plus a taint on that region=build nodes to prevent pods from landing there normally.
2) set a project default nodeselector, e.g. ("region=build || region=app")
3) set a build nodeselector which is a subset of (2) ("region=build")
4) set a build toleration default which will allow build pods to land on the region=build nodes.
The taint will prevent app pods from landing there since they will not have the toleration.