Coder Social home page Coder Social logo

Comments (10)

u2mejc avatar u2mejc commented on July 19, 2024 1

Hello! This feature seems fundamental to strong bin packing, but it's been months since the last update.

I am not sure why you think so but the last release was 29 days ago https://github.com/kubernetes-incubator/descheduler/releases/tag/v0.6.0?

Is this project still active

Yes,

Awesome, thanks Avesh! The github front page of the project renders by months, not days, and the visual is that this project hadn't been touched in 2 months.

and is there a timeline to have it merged into an official K8 release?

I dont think there was ever a plan to merge this project into official K8 release.

Is there something you are looking for and does not exist? Or could you tell your exact concerns? Are you looking for "strong bin packing" feature as you mentioned it before?

I have an internal ticket tracking this feature, with the impression (hope?) that it may mature into a built in feature in K8.

I was directed here after asking on Slack why K8 wasn't bin packing under utilized nodes? (Note: Pod prioritization was also brought up as another option)


I'm sure you familiar, but for sake of discussion... here are four nodes, each has 10GB of memory. Two nodes have 4GB of requested by pods, the other two have 6GB requested. (4+4+6+6=20GB requested out of 40GB available.

+--+ +--+ +--+ +--+
|  | |  | |  | |  |
|  | |  | |  | |  |
|  | |  | |  | |  |
|  | |  | |  | |  |
|  | |##| |  | |##|
|  | |##| |  | |##|
|##| |##| |##| |##|
|##| |##| |##| |##|
|##| |##| |##| |##|
|##| |##| |##| |##|
+--+ +--+ +--+ +--+

Now I'd like to schedule a two new pods with 7GB memory request. This is where I'm a little confused.

Without a descheduler (or higher pod priority), K8 will sit there saying No nodes are available that match all of the predicates: insufficient memory. Might the autoscaler add two nodes to meet scheduling demand for another 20GB, leaving 26GB of un-utilized RAM, and a 50% increase in VM cost?

What I'd like to see (and expected before I started using K8) was that the scheduler would see there insufficient memory, and then check if there would be sufficient memory if some pods were rescheduled.

It's my impression that you have written what I'm looking for and that true bin-packing could be achieved if this feature was rolled up in a hook for the scheduler? Did I grok this correctly?

from descheduler.

u2mejc avatar u2mejc commented on July 19, 2024 1

Awesome, thank you for the update. Yeah the MostResourceAllocation will help with initial scheduling, but as you mentioned, "not after that". Hopefully others will agree, saving thousands of dollars a year by improving bin packing would be a great feature request for K8 1.12 or 1.13. Keep up the good work until then! 👍

from descheduler.

aveshagarwal avatar aveshagarwal commented on July 19, 2024

Hello! This feature seems fundamental to strong bin packing, but it's been months since the last update.

I am not sure why you think so but the last release was 29 days ago https://github.com/kubernetes-incubator/descheduler/releases/tag/v0.6.0?

Is this project still active

Yes,

and is there a timeline to have it merged into an official K8 release?

I dont think there was ever a plan to merge this project into official K8 release.

Is there something you are looking for and does not exist? Or could you tell your exact concerns? Are you looking for "strong bin packing" feature as you mentioned it before?

from descheduler.

aveshagarwal avatar aveshagarwal commented on July 19, 2024

Default scheduler in kube has a non-default priority function: MostResourceAllocation (https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/algorithm/priorities/most_requested.go). This priority function favors node with most used resources. It would help at the time of pod admission but not after that. So you could see if by enabling MostResourceAllocation would help you to some extent.

We have plans to add strong bin packing algorithm to descheduler that will work with MostResourceAllocation priority function but have not done so far.

from descheduler.

Evesy avatar Evesy commented on July 19, 2024

We too would definitely be interested in something similar; in non production environments we'd want to cram nodes as much as possible, and have descheduler remove pods on low utilised nodes in the hopes that the cluster autoscaler will then remove them.

@aveshagarwal Is MostResourceAllocation something that can be specified as part of pods spec or something similar, or is it an option for scheduler? I'd be interested in enabling it but not sure it's possible on GKE?

from descheduler.

aveshagarwal avatar aveshagarwal commented on July 19, 2024

We too would definitely be interested in something similar; in non production environments we'd want to cram nodes as much as possible, and have descheduler remove pods on low utilised nodes in the hopes that the cluster autoscaler will then remove them.

Yes descheduler could do that but does not do it now. Also, it is possible that you might not need descheduler because as soon as cluster autoscaler removes nodes, any pods on those nodes would get recreated on the remaining nodes, i think.

@aveshagarwal Is MostResourceAllocation something that can be specified as part of pods spec or something similar, or is it an option for scheduler?

No, not pod spec, you would have to modify scheduler policy for that.

from descheduler.

fejta-bot avatar fejta-bot commented on July 19, 2024

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

from descheduler.

fejta-bot avatar fejta-bot commented on July 19, 2024

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

from descheduler.

fejta-bot avatar fejta-bot commented on July 19, 2024

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

from descheduler.

k8s-ci-robot avatar k8s-ci-robot commented on July 19, 2024

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

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/test-infra repository.

from descheduler.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.