-
Notifications
You must be signed in to change notification settings - Fork 893
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
feat: cluster-level resource scheduling suspend and resume capabilities #5937
base: master
Are you sure you want to change the base?
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 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 |
Welcome @Monokaix! It looks like this is your first PR to karmada-io/karmada 🎉 |
c4d5f12
to
08407d6
Compare
Codecov ReportAttention: Patch coverage is
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## master #5937 +/- ##
==========================================
+ Coverage 48.15% 48.27% +0.11%
==========================================
Files 664 664
Lines 54803 54848 +45
==========================================
+ Hits 26393 26477 +84
+ Misses 26693 26652 -41
- Partials 1717 1719 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
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.
Don't we need to introduce a field to ResourceBinding?
|
||
// Scheduling controls whether scheduling should be suspended. | ||
// nil means not suspend, no default value, only accepts 'true'. | ||
// Karmada scheduler will pause scheduling when value is true and resume scheduling when it's nil. | ||
Scheduling *bool `json:"scheduling,omitempty"` |
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.
Can you explain a little bit why PropagationPolicy
needs this?
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 Suspension
is common struct which indicates a suspension semantics, so based on the existing Suspension
, I added scheduling suspension other than dispatcher. If you think it is inappropriate, I can add a new suspension structure just for scheduling, but this seems a bit redundant.
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.
Sorry, I didn't make it clear.
In my understanding, what you need is introducing scheduling suspension to ResourceBinding, my question is do you need to do that to PropgationPolicy as well?
PS:
I know both ResourceBinding and PropgationPolicy share the same typed structure (type Suspension struct
). They may no longer be able to share the existing structure if we don't want to introduce scheduling suspension to PropgationPolicy.
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.
Yeah you are right, currenly I don't need the filed in PropgationPolicy, unless we just want to debug this feature easily.
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.
`Karmada scheduler``
Do we not need to limit it to karmada-scheduler? Whether all schedulers should care about this field.
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.
@XiShanYongYe-Chang Yeah you are right, has modified: )
// Suspended represents the condition that the ResourceBinding or ClusterResourceBinding is suspended to schedule. | ||
Suspended string = "Suspended" |
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 ambiguous as people can not tell what's suspended.
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.
As far as I know, the Rb resource is an abstract of scheduling, so maybe it's enough? And other conditions are Scheduled string = "Scheduled"
, which are also a semantic related to scheduling, or could you give some advice?
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.
Directly use ScheduleSuspended
?
6e5f6ff
to
060994b
Compare
|
||
// Scheduling controls whether scheduling should be suspended. | ||
// nil means not suspend, no default value, only accepts 'true'. | ||
// scheduler will pause scheduling when value is true and resume scheduling when it's nil. | ||
Scheduling *bool `json:"scheduling,omitempty"` |
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.
It's not clear why we need flag field here, also the field "scheduling" looks confusing what does the admin really want to stop system from doing.
Whether the resourcebinding shall be created?
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 resourcebinding will be created but scheduler will not scheduler, because we need some admission check such as quota check, multi-tenancy prioritization, etc before schduler process resourcebinding.
Will add more comments: )
Signed-off-by: Monokaix <[email protected]>
Signed-off-by: Monokaix <[email protected]>
Signed-off-by: Monokaix <[email protected]>
What type of PR is this?
/kind api-change
/kind feature
What this PR does / why we need it:
Add rb suspension capability, background: #5690
Which issue(s) this PR fixes:
Fixes #5690
Special notes for your reviewer:
It extends the Suspension fileds and support rb susupend and resume, mostly like the previous issue #5217 and PRs implemented in it.
Does this PR introduce a user-facing change?: