Warning
You are currently viewing v"2.14" of the documentation and it is not the latest. For the most recent documentation, kindly click here.
Kubernetes Cluster:
KEDA Installation:
kubectl:
kubectl
command-line tool is required to interact with your Kubernetes cluster.kubectl
on your operating system.kubectl
to communicate with your Kubernetes cluster by following the cluster-specific instructions provided by your Kubernetes setup.KEDA supports various scalers that correspond to different event sources or triggers. Determining the right scaler is crucial for scaling your application based on the desired event source.
If you want to scale based on incoming HTTP traffic, you would need the HTTP Add-on.
Note: The HTTP Add-on is still in beta stage and may not provide the full functionality or stability expected in a production environment.
If you want to scale based on messages in a RabbitMQ queue, you would need the RabbitMQ scaler.
If you want to scale based on a cron schedule, you would need the Cron scaler.
Some scalers are part of the core KEDA installation, while others need to be installed separately as add-ons.
helm install
for Helm charts) or applying YAML manifests using kubectl
.KEDA uses a custom resource called ScaledObject
to define how your application should be scaled based on the chosen event source or trigger.
scaledobject.yaml
) in a text editor or using the command line.ScaledObject
configuration in this file, following the structure and examples provided in the documentation of your chosen scaler.ScaledObject
configuration includes the following sections:
metadata
: Specifies the name and namespace for the ScaledObject
.spec.scaleTargetRef
: Identifies the Kubernetes deployment or other resource that should be scaled.spec.pollingInterval
(optional): Specifies how often KEDA should check for scaling events (defaults to 15 seconds).spec.cooldownPeriod
(optional): Specifies the cool-down period in seconds after a scaling event (defaults to 300 seconds).spec.maxReplicaCount
(optional): Specifies the maximum number of replicas to scale up to (defaults to 100).spec.triggers
: Defines the specific configuration for your chosen scaler, including any required parameters or settings.triggers
section and any other required or optional configuration settings.scaledobject.yaml
file after making the necessary modifications.Once you have created the ScaledObject
configuration file, apply it to your Kubernetes cluster using kubectl
:
Open a terminal or command prompt and navigate to the directory containing the scaledobject.yaml
file.
Run the following command to apply the ScaledObject
configuration:
kubectl apply -f scaledobject.yaml
scaledobject.keda.sh/<scaled-object-name> created
Verify that the ScaledObject
has been created successfully by running:
kubectl get scaledobjects
This should display the ScaledObject
you just created.
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE
<scaled-object-name> Deployment <deployment-name> 1 10 cpu <none> True False <none> 10s
After applying the ScaledObject
configuration, KEDA will start monitoring the specified event source and scale your application accordingly, based on the configurations you provided.
You can monitor the scaling events and logs generated by KEDA using the following commands:
List all ScaledObjects
in your cluster:
kubectl get scaledobjects
This will show you the current state of your ScaledObject
and the number of replicas.
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE
<scaled-object-name> Deployment <deployment-name> 1 10 cpu <none> True False <none> 10s
View the logs of the KEDA operator:
kubectl logs -n keda -l app=keda-operator
The KEDA operator logs will show you detailed information about scaling events, decisions made by KEDA based on the event source, and any errors or warnings.
{"level":"info","ts":<timestamp>,"logger":"scalehandler","msg":"Successfully scaled deployment","scaledobject.Namespace":"<namespace>","scaledobject.Name":"<scaled-object-name>","scaler":<scaler-type>}