Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set spec.experimental.gpuKaiContract: v1alpha1-2026-07.
AutomationStrategy defines how resizing is allowed to happen within a namespace.
Use it when a team owns its own namespace and should manage resize behavior locally.
For the cluster-scoped variant, see Cluster Automation Strategies.
Automation strategies control:
- which CPU, memory, and ephemeral-storage changes are allowed
- whether in-place resize is permitted
- whether eviction fallback is permitted
- which safety checks run before actions are executed
Scope Mapping
ProactivePolicyandStaticPolicyreference a namespacedAutomationStrategyin the same namespace.ClusterProactivePolicyandClusterStaticPolicyreference aClusterAutomationStrategy; those cluster-scoped relationships are documented in Cluster Automation Strategies.
Field Reference
This page covers the configurablespec fields for namespaced AutomationStrategy. The cluster-scoped ClusterAutomationStrategy uses the same spec structure and defaults, but is documented separately in Cluster Automation Strategies.
Usage-level floor and ceiling values apply to all containers by default. Add containers.<name> under the same requests or limits block when a multi-container pod needs different bounds for specific containers.
VPA Filter Behavior
Two complementary VPA filters help avoid conflicts between Kubex automation and Vertical Pod Autoscalers:enableVpaFilter (default: true)
Filters actions when a VPA is actively managing the resource. This requires all of:- VPA
updateModeis notOff(i.e.,Auto,Recreate, orInitial) - VPA has an active recommendation with status
RecommendationProvided=True - The resource dimension (e.g.,
cpu.requests) appears in the VPA’scontainerRecommendations
blockResizeOnVpaControlledResources (default: false)
Filters actions for resources declared in a VPAresourcePolicy, regardless of whether the VPA is active. This check is only evaluated when enableVpaFilter=true. It checks only:
- The resource is listed in
resourcePolicy.containerPolicies[].controlledResources - The usage type (requests/limits) matches
controlledValues(defaults to both)
- VPA
updateMode(blocks even whenOff) - Recommendation status (blocks even when no recommendations exist)
- Whether VPA is actively applying changes
Comparison
Note:
blockResizeOnVpaControlledResources is ignored unless enableVpaFilter=true is enabled.
Scheduling Windows
spec.scheduling lets you control when the controller is allowed to execute resize actions.
inclusionWindowsdefine allowed times. If multiple inclusion windows are defined, they are evaluated with OR logic (automation is allowed if it matches ANY inclusion window). Inclusion windows may overlap.exclusionWindowsdefine blocked times and always override inclusion windows.- If neither list is set, scheduling does not restrict automation.
- If any inclusion window is defined, automation is allowed only while the current time matches at least one inclusion window.
startis inclusive andendis exclusive.- If
startorendare omitted, they default to00:00and24:00respectively, allowing for easy “all day” configuration. - Windows are evaluated in the window’s local IANA timezone specified in the
timezonefield. - Overnight windows are supported. For example,
22:00to02:00spans midnight. weekdaysaccepts full and short names such asMonday,Mon,Thursday, orThu.
timezonemust be a valid IANA timezone such asUTC,Europe/London, orAmerica/New_York.startandendmust use 24-hourHH:MMformat.24:00is supported for exclusive end times.startandendcannot be the same value, unless they are both omitted.
KAI vLLM tuning
Whenspec.kai.vllm is set, Kubex configures vLLM’s --gpu-memory-utilization setting for KAI-managed workloads.
Set gpuMemoryUtilizationBufferPercent to leave a safety buffer below the workload’s GPU allocation. For example, a value of 10 leaves 10% unused by vLLM. The setting works whether or not HAMi-core is enabled.
Kubex updates the setting for vLLM containers when it applies a KAI GPU allocation. It updates an existing setting or adds it when needed.
Example:
Helm Mapping
Scheduling is part of theAutomationStrategy and ClusterAutomationStrategy CRD surface, but the current chart does not map policy.policies.<name>.scheduling into generated ClusterAutomationStrategy resources.
For Helm-based installs, that means:
- Use
policy.policiesfor the Helm-managed subset of strategy settings. - Manage
AutomationStrategyorClusterAutomationStrategymanifests directly when you need scheduling windows. - Point Helm-managed policy scopes at that externally managed strategy by name when needed.
Ephemeral Storage
spec.enablement.ephemeralStorage uses the same fields as spec.enablement.memory, plus restartStrategy. Unlike memory, every storage change is off by default. Set upsize, downsize, or setFromUnspecified to true for the changes you want. Example that allows storage changes with a floor, keeps limits from shrinking, and sets a per-container ceiling:
restartStrategy: Evict to let Kubex restart the pod to apply them. See Proactive Policies for how to turn them on, how they are applied, and how to turn them off.
Storage changes smaller than spec.safetyChecks.minEphemeralStorageChangePercent (default 10) are ignored. It is set separately from minMemoryChangePercent, so storage can use a higher threshold than memory.
Guaranteed QoS Behavior
Whenspec.safetyChecks.retainGuaranteedQOS is enabled:
- The behavior applies only to pods that are currently in the Kubernetes
GuaranteedQoS class. - For CPU and memory, desired limits are treated as the source of truth.
- Request values are automatically set to match limit values so
requests == limitsremains true. - If a limit action exists but no request action exists, the controller can add a matching request action to preserve
GuaranteedQoS.
Guaranteed QoS.
Note: A pod is in the Guaranteed QoS class only when ALL containers have requests == limits for BOTH CPU and memory. If a container has CPU request=limit but memory request≠limit, the pod is Burstable, not Guaranteed, and this behavior does not activate.
Example: Namespaced Strategy
Related
- For cluster-scoped strategy examples and guidance, see Cluster Automation Strategies.
- For policies that reference this resource, see Proactive Policies and Static Policies.

