-
Notifications
You must be signed in to change notification settings - Fork 4k
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
Support in-place resource update feature for VPA #5046
Comments
/assign @jbartosik |
Just to document a caveat regarding the capping of requests here, so we keep this in mind:
EDIT: Sorry, turns out I didn't look properly for uses of autoscaler/vertical-pod-autoscaler/pkg/updater/priority/update_priority_calculator.go Line 82 in fc0666c
podsForUpdate in the above loop do already have capped recommendations and we're fine!
|
I'm writing this down and I'll send a PR when it's ready. I was thinking about something a little different:
I heard that some time ago scaling down in place could cause problems, so we might want to allow scalign up in place but evicting to scale down. I didn't think about per-resource configuration (yet). |
Can you elaborate a bit on your thinking why we need additional actuation modes? In theory, these settings are already configured on the Pod itself with
|
Exception for merging kubernetes/kubernetes#102884 was rejected so I think we will (unfortunately) have much time to discuss this. |
The main reason I think we should have a new enum value for the new behaviour is that some uses may want to configure their VPAs to keep that behavior (even if VPA changes what Longer version: I think that there are at lest the following kinds of workloads when looking at in-place updates
For 4) we have modes When VPA deducing if it should apply in-place update works for distinguishing 2 and 3 (also there's So I think we'll need enum values to distinguish those. And since we're going to add enum values we might as well add them at the same time we add new VPA behaviors (so if someone doesn't want to worry that we'll change what I'm not sure if will merge in time for kubernetes/kubernetes#102884 The last update in the SIG-Node doc is from 2022-09-20 and it says that kubernetes/kubernetes#102884 can merge after:
From comment it looks like containerd release will happen. |
One more reason to have this as a separate enum value is that since |
Thanks @jbartosik for clarifying your thoughts on adding new actuation modes! I took me a while to understand the semantics of I'm not sure if we also need |
Sadly (source):
|
#4016 was opened earlier for the same thing, let's have one issue for tracking this |
Which component are you using?: Vertical Pod Autoscaler
Is your feature request designed to solve a problem? If so, describe the problem this feature should solve.:
In Kubernetes 1.25, the in-place resource update feature would be available in alpha. Any pods with this feature enabled would have a field to specify the restarting policies as the following. Pods controlled by VPA with a
NoRestart
policy should not be evicted by the VPA updater. Instead, it should be patched with the new recommended request directly.Describe the solution you'd like.:
In the VPA updater, whenever existing logic decides to evict the pod, we should add a check on the pod spec to determine if
NoRestart
policy is enabled. If so, a patch request should be sent via updater directly to the pod without evicting it.An example patch command looks like this:
Describe any alternative solutions you've considered.: None
Additional context.: The place where the VPA updater evicts the pod is here:
autoscaler/vertical-pod-autoscaler/pkg/updater/logic/updater.go
Line 196 in fc0666c
The text was updated successfully, but these errors were encountered: