-
Notifications
You must be signed in to change notification settings - Fork 223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] KEP: MultiKueue external custom Job support #2458
base: main
Are you sure you want to change the base?
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: mszadkow The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Hi @mszadkow. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
✅ Deploy Preview for kubernetes-sigs-kueue ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
a6227d9
to
10fc776
Compare
/ok-to-test |
@dgrove-oss is this something that interests you and do you have any thoughts on the proposal? |
|
||
## Motivation | ||
|
||
Many Kueue adaptors have company specific CustomResources. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Many Kueue adaptors have company specific CustomResources. | |
Many Kueue adopters have company specific CustomResources. |
?
Provide a way to integrate external controllers to manage Jobs in the Kueue. | ||
MulikueueCluster API needs to be modified to ensure that one multikueue cluster is only managed by one admission check controller. | ||
|
||
1. Add ControllerName to the `MultiKueueClusterSpec` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a non-starting point for this proposal.
Asking users to create one MultiKueueCluster object for each integration is too much burden.
Sure, they just need one for all of their CRDs, but what if they need to support a native jobs + in-house jobs + third-party jobs that offer MK support. Now they have at least 3 configurations for the same thing.
How does a MultiKueueConfig that supports all of these jobs look like?
IIUC, your intention with a separate object is to have conditions separate for each external admission check. Then let's maybe add an object just for that, that only one controller processes each time, separate from MultiKueueCluster.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One alternative to this, described later, is to have a custom condition type for the MultiKueueCluster that reflects the connection stale for each ControllerName using it.
Asking users to create one MultiKueueCluster object for each integration is too much burden.
It should not be for each integration, is for each configured controller , the controller can support any number of adapters.
How does a MultiKueueConfig that supports all of these jobs look like?
Nothing changes for MultiKueueConfig, they are just used by an AdmissionCheck (which already has a ControllerName)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One alternative to this, described later, is to have a custom condition type for the MultiKueueCluster that reflects the connection stale for each ControllerName using it.
This sounds much better.
} | ||
} | ||
``` | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please expand on:
- which subcomponents of MK each external controller is implementing (even if provided by a framework)
- how does a configuration for multiple of these controllers look like from the ClusterQueue point of view.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The integration test scenario seemed reasonable to me.
Providing a mechanism to register an external controller and have it coordinate with the builtin components about which GVKs each is responsible seems right.
There was not sufficient detail for me as a MultiKueue outsider to understand how the pieces fit together and what I'd need to do to add an external custom Job. Is this KEP also supposed to cover external Job adapters too?
|
||
Internally the MultiKueue uses a set of controller-runtime client, one for each MultiKueueCluster, the clients are used both by the MultiKueue internals and passed to the job adapters for the custom jobs synchronization. | ||
|
||
The clients cannot be share with an external controller and assuming the external controller can get the same connectivity to the worker clusters might be wrong, especially when we are taking about FS mounted kubeconfigs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The clients cannot be share with an external controller and assuming the external controller can get the same connectivity to the worker clusters might be wrong, especially when we are taking about FS mounted kubeconfigs. | |
The clients cannot be shared with an external controller and assuming the external controller can get the same connectivity to the worker clusters might be wrong, especially when we are taking about FS mounted kubeconfigs. |
Yes, it's supposed to enable the easy creation of them. I agree that the proposal needs more detail. |
ACK |
/retitle [WIP] KEP: MultiKueue external custom Job support |
72d5e1e
to
ec73442
Compare
@mszadkow: The following test failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
What type of PR is this?
/kind documentation
What this PR does / why we need it:
New KEP that explains the way to introduce MultiKueue external custom Job support.
Which issue(s) this PR fixes:
Fixes #2349
Special notes for your reviewer:
Does this PR introduce a user-facing change?