5/25/2025

Upgrading KEDA: Clean Uninstall and Reinstall Guide







When working with Kubernetes-based event-driven autoscaling using KEDA (Kubernetes Event-driven Autoscaling), it’s sometimes necessary to uninstall the current version and perform a clean reinstall—especially when troubleshooting or upgrading to a newer release.

In this post, we’ll walk you through a complete KEDA uninstall and reinstall process, including how to properly remove all ScaledObjects and ScaledJobs.


🧼 Step 1: Uninstall KEDA

The first step is to remove KEDA from your cluster using Helm:

helm uninstall keda -n keda

For reference, see the official uninstall documentation: KEDA Uninstall Guide


🧹 Step 2: Clean Up ScaledObjects and ScaledJobs

Before KEDA can be fully uninstalled, it's important to delete any existing ScaledObjects and ScaledJobs. These resources may prevent a clean uninstall if not removed.

πŸ” List Existing Resources

kubectl get scaledobjects.keda.sh,scaledjobs.keda.sh -A

NAMESPACE   NAME                         MIN   MAX   TRIGGERS         AUTHENTICATION       READY   ACTIVE   AGE
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        722d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        2y266d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        2y266d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        715d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        2y266d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        729d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        729d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        2y266d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        729d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        2y266d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        721d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        651d
default     ***********                  20    20    azure-servicebus service-bus-auth     -       -        721d

πŸ›  Remove Finalizers (Optional but Recommended)

If finalizers are present on ScaledJobs, they can block deletion. Use the following script to remove them:

for i in $(kubectl get scaledjobs -A -o jsonpath='{.items[*].metadata.name}{"\n"}'); do
  kubectl patch scaledjob.keda.sh/$i -p '{"metadata":{"finalizers":null}}' --type=merge
done

❌ Delete the ScaledJobs

Once finalizers are cleared, delete all the ScaledJobs:

for i in $(kubectl get scaledjobs -A -o jsonpath='{.items[*].metadata.name}{"\n"}'); do
  kubectl delete scaledjob $i
done

πŸ” Step 3: Verify Resource Cleanup

Check whether all KEDA-related resources are removed:

kubectl get all -n keda

Picture



🧯 Step 4: Manual Deletion (If Helm Uninstall Fails)

If helm uninstall doesn’t completely remove KEDA components, you can manually delete them with the following commands:

kubectl delete deployment.apps/keda-operator -n keda
kubectl delete deployment.apps/keda-metrics-apiserver -n keda
kubectl delete service/keda-metrics-apiserver -n keda

πŸš€ Step 5: Install the Latest Version of KEDA

Once cleanup is complete, install the latest version of KEDA.

Option 1: Apply Directly from GitHub

kubectl apply --server-side -f https://github.com/kedacore/keda/releases/download/v2.12.0/keda-2.12.0-core.yaml

Option 2: Apply a Local File

kubectl apply --server-side -f keda-2.12.0-core.yaml

namespace/keda serverside-applied
customresourcedefinition.apiextensions.k8s.io/clustertriggerauthentications.keda.sh serverside-applied
customresourcedefinition.apiextensions.k8s.io/scaledjobs.keda.sh serverside-applied
customresourcedefinition.apiextensions.k8s.io/scaledobjects.keda.sh serverside-applied
customresourcedefinition.apiextensions.k8s.io/triggerauthentications.keda.sh serverside-applied
serviceaccount/keda-operator serverside-applied
role.rbac.authorization.k8s.io/keda-operator serverside-applied
clusterrole.rbac.authorization.k8s.io/keda-external-metrics-reader serverside-applied
clusterrole.rbac.authorization.k8s.io/keda-operator serverside-applied
rolebinding.rbac.authorization.k8s.io/keda-operator serverside-applied
rolebinding.rbac.authorization.k8s.io/keda-hpa-controller-external-metrics serverside-applied
clusterrolebinding.rbac.authorization.k8s.io/keda-operator serverside-applied
clusterrolebinding.rbac.authorization.k8s.io/keda-system-auth-delegator serverside-applied
service/keda-operator serverside-applied
service/keda-metrics-apiserver serverside-applied
deployment.apps/keda-metrics-apiserver serverside-applied
deployment.apps/keda-operator serverside-applied
apiservice.apiregistration.k8s.io/v1beta1.external.metrics.k8s.io serverside-applied


For full details, see: KEDA Install Guide


✅ Wrapping Up

This guide helps you perform a clean uninstall and reinstall of KEDA, avoiding issues like lingering resources or stuck finalizers. A clean install ensures your Kubernetes environment remains stable and scalable.

If you found this helpful, bookmark it for future upgrades or troubleshooting!

Happy scaling! πŸš€

No comments:

Post a Comment