Kubernetes Workload¶
https://keda.sh/docs/2.18/scalers/kubernetes-workload/
We have target-deployment where it will autoscaled based on replica on reference-deployment. the scaledObject is referencing reference-deployment and scale the target deployment.
-
Create everything
kubectl apply -f . deployment.apps/reference-nginx-deployment created scaledobject.keda.sh/nginx-kubernetes-workload-scaler created deployment.apps/target-nginx-deployment created ➜ keda-example git:(main) ✗ k get pod NAME READY STATUS RESTARTS AGE reference-nginx-deployment-59c749987f-7tf5z 1/1 Running 0 64s target-nginx-deployment-584d8467dc-7cqsk 1/1 Running 0 64s ➜ keda-example git:(main) ✗ k get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE keda-hpa-nginx-kubernetes-workload-scaler Deployment/target-nginx-deployment 1/1 (avg) 1 10 1 3m23s -
Try to scale reference-deployment to 5 replica
➜ keda-example git:(main) ✗ k scale --replicas=5 deployment/reference-nginx-deployment deployment.apps/reference-nginx-deployment scaled (⎈|main-ps-sy-id-s-01:keda-testing) [29/12/25 | 7:03:21] ➜ keda-example git:(main) ✗ k get pod NAME READY STATUS RESTARTS AGE reference-nginx-deployment-59c749987f-7tf5z 1/1 Running 0 4m8s reference-nginx-deployment-59c749987f-hfjkq 0/1 ContainerCreating 0 4s reference-nginx-deployment-59c749987f-jqksb 0/1 ContainerCreating 0 4s reference-nginx-deployment-59c749987f-zccjh 0/1 ContainerCreating 0 4s reference-nginx-deployment-59c749987f-zd6zb 0/1 ContainerCreating 0 4s -
KEDA automatically scale the target-deployment
➜ keda-example git:(main) ✗ k get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE keda-hpa-nginx-kubernetes-workload-scaler Deployment/target-nginx-deployment 1/1 (avg) 1 10 5 4m41s (⎈|main-ps-sy-id-s-01:keda-testing) [29/12/25 | 7:04:08] ➜ keda-example git:(main) ✗ k get pod NAME READY STATUS RESTARTS AGE reference-nginx-deployment-59c749987f-7tf5z 1/1 Running 0 5m6s reference-nginx-deployment-59c749987f-hfjkq 1/1 Running 0 62s reference-nginx-deployment-59c749987f-jqksb 1/1 Running 0 62s reference-nginx-deployment-59c749987f-zccjh 1/1 Running 0 62s reference-nginx-deployment-59c749987f-zd6zb 1/1 Running 0 62s target-nginx-deployment-584d8467dc-4gmmh 1/1 Running 0 45s target-nginx-deployment-584d8467dc-7cqsk 1/1 Running 0 5m6s target-nginx-deployment-584d8467dc-9v9l6 1/1 Running 0 60s target-nginx-deployment-584d8467dc-qp57r 1/1 Running 0 60s target-nginx-deployment-584d8467dc-z5mgv 1/1 Running 0 60s
it will keep the same replica since we set value as '1'.
If we want to set the replica 2x of the reference-deployemnt, we can set the value as 0.5
If we want to set the replica only half of the reference-deployemnt, we can set the value as 2