Memory Click here for latest

Scale applications based on memory metrics.

Availability: v2.0+ Maintainer: Community

Warning

You are currently viewing v"2.3" of the documentation and it is not the latest. For the most recent documentation, kindly click here.

Notice:

  • This scaler requires prerequisites. See the ‘Prerequisites’ section.
  • This scaler will never scale to 0 and even when user defines multiple scaler types (eg. Kafka + cpu/memory, or Prometheus + cpu/memory), the deployment will never scale to 0.
  • This scaler only applies to ScaledObject, not to Scaling Jobs.

Prerequisites

KEDA uses standard cpu and memory metrics from the Kubernetes Metrics Server, which is not installed by default on certain Kubernetes deployments such as EKS on AWS. Additionally, the resources section of the relevant Kubernetes Pods must include requests (at a minimum).

  • The Kubernetes Metrics Server must be installed. Installation instructions vary based on your Kubernetes provider.
  • The configuration for your Kubernetes Pods must include a resources section with specified requests. See Resource Management for Pods and Containers. If the resources section is empty (resources: {} or similar) the error missing request for {cpu/memory} occurs.
# a working example of resources with specified requests
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    resources:
      requests:
        memory: "128Mi"
        cpu: "500m"

Trigger Specification

This specification describes the memory trigger that scales based on memory metrics.

triggers:
- type: memory
  metadata:
    # Required
    type: Utilization # Allowed types are 'Utilization' or 'AverageValue'
    value: "60"

Parameter list:

  • type - Type of metric to use. Options are Utilization, or AverageValue.
  • value - Value to trigger scaling actions for:
    • When using Utilization, the target value is the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.
    • When using AverageValue, the target value is the target value of the average of the metric across all relevant pods (quantity).

Example

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: memory-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: my-deployment
  triggers:
  - type: memory
    metadata:
      type: Utilization # Allowed types are 'Utilization' or 'AverageValue'
      value: "50"