Skip to content

Vertical Pod Autoscaler

概要

Kubernetes Vertical Pod Autoscaler (VPA) automatically adjusts CPU and memory requests for pods based on observed usage. DataRobot supports VPA across all workload types (Deployments, StatefulSets, DaemonSets, Jobs, and CronJobs).

VPA is disabled by default. When enabled, DataRobot operates VPA in Initial mode, which sets resource requests once at pod creation and never mutates running pods.

前提条件

The VPA operator must be installed on your Kubernetes cluster before enabling this feature. Refer to the VPA installation documentation for instructions.

Enable VPA

Set the following in your values.yaml to enable VPA for all DataRobot workloads:

global:
  vpa:
    enabled: true 

Update mode

DataRobot uses VPA Initial mode exclusively. In this mode, VPA sets resource requests when a pod is first scheduled. It does not evict or modify running pods.

Using other VPA update modes (such as Recreate or Auto) is not supported.

HPA coexistence

Many DataRobot services run with Horizontal Pod Autoscaler (HPA) enabled. The Kubernetes autoscaler documentation states that VPA should not be used with HPA on the same resource metric (CPU or memory). However, Initial mode is safe in practice because:

  • Resource requests are fixed after pod creation—HPA sees a stable utilization denominator.
  • The feedback loop (i.e., VPA changes requests > HPA reacts > VPA reacts again) cannot occur because VPA never modifies live pods.

注意

Enabling VPA modes other than Initial when HPA is active can cause conflicting scaling behavior and is not supported.

Resource bounds

VPA bounds prevent recommendations from going below a minimum or above a maximum. DataRobot automatically derives bounds from each container's configured resources:

Bound デフォルト
minAllowed 0.5 × resource requests.
maxAllowed Resource limits.

You can override these globally in values.yaml:

global:
  vpa:
    enabled: true
    minAllowed:
      cpu: 100m
      memory: 128Mi
    maxAllowed:
      cpu: 4
      memory: 8Gi 

Global bounds apply to all workloads. To override bounds for a specific service, set vpa.minAllowed and vpa.maxAllowed under that service's key:

mongodb:
  vpa:
    minAllowed:
      cpu: "185m"
      memory: "1513Mi"
    maxAllowed:
      cpu: "6000m"
      memory: "24Gi" 

Per-service values take precedence over the global defaults.