KEDA is designed, tested and supported to be run on any Kubernetes cluster that runs Kubernetes v1.16.0 or above.
The KEDA runtime require the following resources in a production-ready setup:
|Metrics Server||Limit: 1, Request: 100m||Limit: 1000Mi, Request: 100Mi|
|Operator||Limit: 1, Request: 100m||Limit: 1000Mi, Request: 100Mi|
These are used by default when deploying through YAML.
💡 For more info on CPU and Memory resource units and their meaning, see this link.
KEDA requires to be accessible inside the cluster to be able to autoscale.
Here is an overview of the required ports that need to be accessible for KEDA to work:
|Used by Kubernetes API server to get metrics||Required for all platforms because it uses Control Plane → port 443 on the Service IP range communication. This is not applicable for Google Cloud.|
|Used by Kubernetes API server to get metrics||Only required for Google Cloud because it uses Control Plane → port 6443 on the Pod IP range for communication|
KEDA does not provide support for high-availability due to upstream limitations.
Here is an overview of all KEDA deployments and the supported replicas:
|Metrics Server||1||Limitation in k8s custom metrics server|
|Operator||2||While you can run more replicas of our operator, only one operator instance will be active. The rest will be standing by, which may reduce downtime during a failure. Multiple replicas will not improve the performance of KEDA, it might only reduce downtime during a failover.This is only supported as of KEDA v2.6 if you are using our Helm chart.|
Some scalers issue HTTP requests to external servers (i.e. cloud services). Each applicable scaler uses its own dedicated HTTP client with its own connection pool, and by default each client is set to time out any HTTP request after 3 seconds.
You can override this default by setting the
KEDA_HTTP_DEFAULT_TIMEOUT environment variable to your desired timeout in milliseconds. For example, on Linux/Mac/Windows WSL2 operating systems, you’d use this command to set to 1 second:
And on Windows Powershell, you’d use this command:
All applicable scalers will use this timeout. Setting a per-scaler timeout is currently unsupported.