Skip to content

koord-descheduler: support loadaware/lowNodeLoad descheduling#889

Merged
koordinator-bot[bot] merged 1 commit intokoordinator-sh:mainfrom
eahydra:support_loadaware_descheduling
Dec 26, 2022
Merged

koord-descheduler: support loadaware/lowNodeLoad descheduling#889
koordinator-bot[bot] merged 1 commit intokoordinator-sh:mainfrom
eahydra:support_loadaware_descheduling

Conversation

@eahydra
Copy link
Member

@eahydra eahydra commented Dec 16, 2022

Signed-off-by: Joseph joseph.t.lee@outlook.com

Ⅰ. Describe what this PR does

Support LoadAware descheduling. Currently support LowNodeLoad strategy.
LowNodeLoad evicts pods from overutilized nodes to underutilized nodes. Note that the plugin refers to the actual usage of the node. LowNodeLoad implements the extension point Balance. It will be called periodically.

Basic process:

  1. Filter nodes according to the configured nodeSelector, and combine the configured lowThresholds and highThresholds to filter out which nodes are sourceNodes and which nodes are lowNodes(or named destinationNodes).
  2. Calculate the resource capacity that can be used for migration based on the actual resource usage of the target node and the target threshold(highThresholds).
  3. Filter the Pods in the sourceNodes as removablePods according to the configured evictableNamespaces and podSelectors.
  4. Sort removablePods by Koordinator PriorityClass, Koordinator QoSClass, K8s QoSClass, Priority, Usage, and creation time.
  5. One by one evicts each Pod and reduces the corresponding resource capacity that can be used for migration until all Pods are evicted or the available resource capacity is 0.

Ⅱ. Does this pull request fix one issue?

fix #201

Ⅲ. Describe how to verify it

Ⅳ. Special notes for reviews

V. Checklist

  • I have written necessary docs and comments
  • I have added necessary unit tests and integration tests
  • All checks passed in make test

@eahydra
Copy link
Member Author

eahydra commented Dec 16, 2022

/milestone v1.1
/hold for UT and proposal

@koordinator-bot koordinator-bot bot added this to the v1.1 milestone Dec 16, 2022
@eahydra eahydra requested review from ZiMengSheng, buptcozy, hormes, jasonliu747 and saintube and removed request for yihuifeng December 16, 2022 12:47
@codecov
Copy link

codecov bot commented Dec 16, 2022

Codecov Report

Base: 66.90% // Head: 67.01% // Increases project coverage by +0.11% 🎉

Coverage data is based on head (ca16b45) compared to base (c43b4db).
Patch coverage: 73.28% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #889      +/-   ##
==========================================
+ Coverage   66.90%   67.01%   +0.11%     
==========================================
  Files         234      238       +4     
  Lines       26874    27395     +521     
==========================================
+ Hits        17981    18360     +379     
- Misses       7616     7736     +120     
- Partials     1277     1299      +22     
Flag Coverage Δ
unittests 67.01% <73.28%> (+0.11%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...ler/apis/config/validation/validation_loadaware.go 0.00% <0.00%> (ø)
...duler/framework/plugins/loadaware/low_node_load.go 64.16% <64.16%> (ø)
.../descheduler/framework/plugins/loadaware/sorter.go 69.86% <69.86%> (ø)
...er/framework/plugins/loadaware/utilization_util.go 89.47% <89.47%> (ø)
pkg/descheduler/node/node.go 85.88% <100.00%> (-0.17%) ⬇️
pkg/koordlet/runtimehooks/reconciler/reconciler.go 65.88% <0.00%> (-1.18%) ⬇️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@eahydra eahydra force-pushed the support_loadaware_descheduling branch 3 times, most recently from 8b1560a to aa0f9bf Compare December 19, 2022 13:26
@eahydra eahydra changed the title koord-descheduler: support load-aware descheduling koord-descheduler: support loadaware/lowNodeLoad descheduling Dec 19, 2022
@eahydra
Copy link
Member Author

eahydra commented Dec 19, 2022

/hold cancel
ready for review

@eahydra eahydra force-pushed the support_loadaware_descheduling branch 5 times, most recently from 42ed19c to 353dcfc Compare December 19, 2022 14:24
@hormes
Copy link
Member

hormes commented Dec 20, 2022

/lgtm

@saintube
Copy link
Member

/lgtm

@eahydra eahydra force-pushed the support_loadaware_descheduling branch from 353dcfc to 105146b Compare December 23, 2022 07:37
@koordinator-bot koordinator-bot bot removed the lgtm label Dec 23, 2022
@eahydra
Copy link
Member Author

eahydra commented Dec 23, 2022

fix LowNodeLoad args error. cc @hormes @saintube

Signed-off-by: Joseph <joseph.t.lee@outlook.com>
@eahydra eahydra force-pushed the support_loadaware_descheduling branch from 105146b to ca16b45 Compare December 23, 2022 07:51
@saintube
Copy link
Member

/lgtm

@koordinator-bot koordinator-bot bot added the lgtm label Dec 23, 2022
Copy link
Member

@FillZpp FillZpp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@koordinator-bot
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: FillZpp

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@koordinator-bot koordinator-bot bot merged commit 41cbe75 into koordinator-sh:main Dec 26, 2022
lucming pushed a commit to lucming/koordinator that referenced this pull request Feb 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[proposal] load-aware descheduling

4 participants