You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Skipping Disruption Budget for Non-Disruptive Updates](#skipping-disruption-budget-for-non-disruptive-updates)
14
+
-[When Disruption Budgets Are Still Respected](#when-disruption-budgets-are-still-respected)
13
15
-[Requirements:](#requirements)
14
16
-[Configuration](#configuration)
15
17
-[Limitations](#limitations)
@@ -89,7 +91,7 @@ To enable this feature, set the `--round-memory-bytes` flag when running the VPA
89
91
90
92
## In-Place Updates (`InPlaceOrRecreate`)
91
93
92
-
> [!WARNING]
94
+
> [!WARNING]
93
95
> FEATURE STATE: VPA v1.4.0 [alpha]
94
96
> FEATURE STATE: VPA v1.5.0 [beta]
95
97
@@ -123,6 +125,19 @@ Important Notes
123
125
124
126
* Memory Limit Downscaling: In the beta version, memory limit downscaling is not supported for pods with resizePolicy: PreferNoRestart. In such cases, VPA will fall back to pod recreation.
125
127
128
+
### Skipping Disruption Budget for Non-Disruptive Updates
129
+
130
+
By default, VPA respects disruption budgets (eviction tolerance, min replicas) even for in-place updates. However, when an in-place update doesn't require container restarts, it's truly non-disruptive and these checks may be unnecessarily restrictive.
131
+
132
+
The `--in-place-skip-disruption-budget` flag (default: `false`) allows VPA to skip disruption budget checks for in-place updates when all containers in the pod have `NotRequired` resize policy for both CPU and memory or no resize policy is defined.
133
+
134
+
#### When Disruption Budgets Are Still Respected
135
+
136
+
Even with this flag enabled, disruption budgets are enforced when:
137
+
* Any container has `RestartContainer` resize policy for any resource
138
+
* The update would result in pod eviction/recreation (fallback scenarios)
139
+
140
+
126
141
### Requirements:
127
142
128
143
* Kubernetes 1.33+ with `InPlacePodVerticalScaling` feature gate enabled
@@ -134,7 +149,7 @@ Enable the feature by setting the following flags in VPA components ( for both u
Copy file name to clipboardExpand all lines: vertical-pod-autoscaler/docs/flags.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -152,6 +152,7 @@ This document is auto-generated from the flag definitions in the VPA updater cod
152
152
|`eviction-tolerance`| float | 0.5 | Fraction of replica count that can be evicted for update, if more than one pod can be evicted. |
153
153
|`feature-gates`| mapStringBool || A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:<br>AllAlpha=true\|false (ALPHA - default=false)<br>AllBeta=true\|false (BETA - default=false)<br>InPlaceOrRecreate=true\|false (BETA - default=true)<br>PerVPAConfig=true\|false (ALPHA - default=false) |
154
154
|`ignored-vpa-object-namespaces`| string || A comma-separated list of namespaces to ignore when searching for VPA objects. Leave empty to avoid ignoring any namespaces. These namespaces will not be cleaned by the garbage collector. |
155
+
|`in-place-skip-disruption-budget`|||[ALPHA] If true, VPA updater skips disruption budget checks for in-place pod updates when all containers have NotRequired resize policy (or no policy defined) for both CPU and memory resources. Disruption budgets are still respected when any container has RestartContainer resize policy for any resource. |
155
156
|`in-recommendation-bounds-eviction-lifetime-threshold`|| 12h0m0s | duration Pods that live for at least that long can be evicted even if their request is within the [MinRecommended...MaxRecommended] range |
156
157
|`kube-api-burst`| float | 100 | QPS burst limit when making requests to Kubernetes apiserver |
157
158
|`kube-api-qps`| float | 50 | QPS limit when making requests to Kubernetes apiserver |
"If true, updater will only evict pods when admission controller status is valid.")
77
77
78
+
inPlaceSkipDisruptionBudget=flag.Bool(
79
+
"in-place-skip-disruption-budget",
80
+
false,
81
+
"[ALPHA] If true, VPA updater skips disruption budget checks for in-place pod updates when all containers have NotRequired resize policy (or no policy defined) for both CPU and memory resources. "+
82
+
"Disruption budgets are still respected when any container has RestartContainer resize policy for any resource.",
0 commit comments