Apply Fast scaling with YAML

Apply Fast scaling with YAML

This topics describes how to apply Fast scaling to workloads using YAML.

Fast scaling is powered by Zesty HiberScale technology.

You enable HiberScale technology for workloads by defining a WorkloadDescriptor custom resource.

The WorkloadDescriptor references a workload and defines spike protection that controls when HiberScale resumes hibernated nodes.

When protection is activated for a workload, HiberScale creates hibernated node pools for that workload, based on the QScaler CRD. Kompass manages these pools through QScaler custom resources that correspond to your cluster's autoscaler or Karpenter nodepools.

You can override the local nodepool settings, such as instance types and number of nodes as well as the global HiberScale settings as described in Advanced configuration and observability.

For more information, see HiberScale technology.

WorkloadDescriptor overview

A WorkloadDescriptor is a namespaced resource.

The main fields include:

Example:

apiVersion: kompass.zesty.co/v1alpha1
kind: WorkloadDescriptor
metadata:
  name: test-deployment
  namespace: test
spec:
  workloadReference:
    apiVersion: apps/v1
    kind: Deployment
    name: test-deployment
  protection:
    spike:
      active: true
      threshold: "10%"
      strategy: "default"
  draining:
    method: regular # accelerated (default)|regular
    threshold: 10% # percentage|integer value
  resources:
    cpu: 8000m
    memory: 8Gi

For a full reference of the fields, see WorkloadDescriptor field reference.

The protection section defines when HiberScale resumes hibernated nodes:

Spike protection

Spike protection reacts to unschedulable Pods.

The spike section specifies how Kompass manages unschedulable Pods. For more information on how Kompass protects workloads, see Spike protection with Fast scaling.

Resources

The resources section defines CPU and memory values for hibernated nodes.

Deactivation

You can deactivate HiberScale by disabling the active fields for spike.

For more information, see Resources.

Advanced configuration and observability

The following options provide additional configuration and integration. They are not required for basic operation but can be used to tune behavior or integrate with observability systems.

QScaler local setting overrides

The QScaler CRD defines hibernated node pools. For each autoscaler or Karpenter nodepool that protects a workload, Kompass creates a corresponding QScaler object.

You can override the following settings from the upstream nodepool:

Example:

spec:
 overrides:
   instanceTypes:
   - c5.xlarge
   - c5.2xlarge
   maxHibernatedQNodes:
     type: Absolute
     value: 10
   maxRunningQNodes:
     type: Absolute
     value: 10

Sizing types for maximum values:

Recommendation: For predictability, use Absolute sizing.

QubexConfig global setting overrides

The QubexConfig CRD defines global HiberScale settings.

You can override the default settings after installation in the QubexConfig CR:

kubectl edit qubexconfig qubex-config -n <namespace>

Common settings:

Metrics ingestion

Kompass control plane components expose Prometheus metrics on a /metrics endpoint. These endpoints can be scraped by Prometheus to ingest Kompass metrics into an observability system.