-
Notifications
You must be signed in to change notification settings - Fork 39
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
Don't set limits for Autoscaler Buffer #593
Conversation
Quality Gate passedIssues Measures |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #593 +/- ##
=======================================
Coverage 83.56% 83.56%
=======================================
Files 28 28
Lines 2604 2604
=======================================
Hits 2176 2176
Misses 288 288
Partials 140 140 |
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.
Interesting, thanks for all the description and the links. I wasn't aware of the different levels of QoS, but it makes sense. I always thought that kubelet ranks the pods based the on priority class first and then based on the consumption compared to their requests.
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: alexeykazakov, MatousJobanek The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
d1a683d
into
codeready-toolchain:master
Thanks for explaining this and for the links! Maybe dumb question but why do we want autoscaler pods to be evicted first in case of memory pressure on the node ? I guess it's because we can make room and avoid evicting first user pods but maybe that's not the (only) reason. |
@mfrancisc the whole purpose of the Autoscaler Buffer is to "hold" some compute resources, so the cluster autoscaler do not shrink the cluster too slim in case other pods (like user workloads) suddenly need more room.
So yes we want to make the buffer most likely evictable before anything else. |
Thanks a lot for the context and nice job with configuring this buffer mechanism 👍 |
It's actually not a good idea to set both limits and requests to the same value for our autoscaler buffer.
There are three
Quality of Service Classes (QoS)
in Kube:The Pod has the
Guaranteed
QoS if:The
Guaranteed
pods are evicted last if there is memory pressure in the node. But removing the limits and keeping the requests only we move the Autoscaler Buffer to theBurstable
QoS. SameQoS
as most user pods (some of the user pods can beGuaranteed
though). So the Autoscaler Buffer pods should be evicted first due their lower Priority Class.To be clear. This effect only the eviction case when there is a memory pressure in the node. It doesn't affect pod scheduling. We should be already good with the pod scheduling due to lower Priority Class for Autoscaler Buffer pods.
For more details see:
Paired with codeready-toolchain/toolchain-e2e#1029