Skip to Content
GuideWorkload AutoscalerWorkload Configuration

Workload Configuration

This document describes annotations and labels that you can manually configure on your workloads (Deployments / StatefulSets) to customize the behavior of the Workload Autoscaler.

override_mechanism

Disable Proactive Update

You can disable proactive updates (eviction / in-place resize) for a specific workload by adding the following annotation:

KeyValueDescription
evpa.cloudpilot.ai/disable-proactive-update"true" | "false"When set to "true", the Workload Autoscaler will not update Pods of this workload — including proactive updates (ReCreate / InPlace) and OnCreate mutations on newly created Pods. Recommendations will still be calculated but will not be applied.

Example:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app annotations: evpa.cloudpilot.ai/disable-proactive-update: "true"

Note: When this annotation is set to "true", all optimization actions are disabled for this workload, including applying recommendations to newly created Pods. Recommendations are still calculated in the background and will take effect once you remove the annotation or set it to "false".

Override Runtime Language

CloudPilot AI automatically detects each container’s runtime language via eBPF. If the auto-detected runtime language is not correct for your workload, you can override it using a label:

KeyValueDescription
evpa.cloudpilot.ai/container-runtime-language.<container-name>java, golang, python, nodejs, dotnet, ruby, phpOverride the detected runtime language for the specified container.

Example: override the app container’s runtime language to java:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: evpa.cloudpilot.ai/container-runtime-language.app: "java"

This is useful when:

  • The eBPF agent has not yet detected the language (e.g., workload just started).
  • The auto-detected language is incorrect for a specific container.

Override Primary Container

CloudPilot AI automatically selects a primary container for each workload based on the container with the highest total resource requests (CPU + Memory). If no container has resource requests set, the first container in the Pod spec is used.

You can override this selection with a label:

KeyValueDescription
evpa.cloudpilot.ai/primary-containerContainer name (e.g., app)Override the auto-detected primary container. The value must match a container name in the Pod spec.

Example:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: evpa.cloudpilot.ai/primary-container: "app"

The primary container is used to determine:

  • The workload’s primary runtime language label (evpa.cloudpilot.ai/primary-runtime-language), which can be used in AutoscalingPolicy LabelSelector to target workloads by language.
  • Whether to apply Java-specific optimization (JVM Heap management, GC-aware recommendations, etc.) when the primary container’s runtime language is java.

System-Managed Labels (Read-Only)

The following labels are automatically managed by the Workload Autoscaler. You should not modify them manually — they are listed here for reference only.

KeyDescription
evpa.cloudpilot.ai/primary-runtime-languageThe detected (or overridden) runtime language of the primary container. Possible values: java, golang, python, nodejs, dotnet, ruby, php.
evpa.cloudpilot.ai/disable-proactive-update (label)Managed by the system to control proactive update state. Use the annotation (described above) to override.

Note: The evpa.cloudpilot.ai/primary-runtime-language label is useful for targeting workloads in AutoscalingPolicy via LabelSelector. For example, you can create a policy that applies only to Java workloads by selecting evpa.cloudpilot.ai/primary-runtime-language: java. See AutoscalingPolicy LabelSelector for details.

Last updated on