I finally go around to doing the 2.0 upgrade, and I'm a little confused at some performance issues.
I have around 700 RabbitMQ ScaledObjects. I wrote a script to convert all of them from the v1 to v2 format, and then did the upgrade. Just to see it reconcile every object once (to add the finalizers) took ~3 hours. And the logs are full of Throttling request took 29.426205883s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/[...]/deployments/[...] so I'm guessing it's making an excessive number of API requests, getting throttled, and taking a long time. The part I'm confused about is that a Get request like that should be in the controller-runtime cache already and so shouldn't even hit the apiserver. It wasn't clear to me where in the controller they are even coming from.
Expected Behavior
2.0 upgrade should take very little time.
Actual Behavior
2.0 upgrade took many hours during which scaling was unavailable.
Steps to Reproduce the Problem
- Have way too many ScaledObjects in a just-applied state.
- Launch the manager pod.
- Wait.
- Profit.
Logs from KEDA operator
2020-12-24T06:21:53.539Z INFO controllers.ScaledObject Reconciling ScaledObject {"ScaledObject.Namespace": "...", "ScaledObject.Name": "..."}
I1224 06:22:03.061997 1 request.go:621] Throttling request took 29.430920668s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
I1224 06:22:13.062046 1 request.go:621] Throttling request took 29.431011286s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
2020-12-24T06:22:23.040Z INFO controllers.ScaledObject Reconciling ScaledObject {"ScaledObject.Namespace": "...", "ScaledObject.Name": "..."}
I1224 06:22:23.111974 1 request.go:621] Throttling request took 29.473182423s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
I1224 06:22:33.112340 1 request.go:621] Throttling request took 29.432306204s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
I1224 06:22:43.162005 1 request.go:621] Throttling request took 29.431112037s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
2020-12-24T06:22:52.538Z INFO controllers.ScaledObject Reconciling ScaledObject {"ScaledObject.Namespace": "...", "ScaledObject.Name": "..."}
I1224 06:22:53.162007 1 request.go:621] Throttling request took 29.475063103s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
I1224 06:23:03.162022 1 request.go:621] Throttling request took 29.430427868s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
I1224 06:23:13.212043 1 request.go:621] Throttling request took 29.430636995s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/.../deployments/...
Note that every one of those ...s is a different deployment with no obvious order.
Specifications
- KEDA Version: 2.0.0
- Platform & Version: GKE
- Kubernetes Version: v1.17.13-gke.2001
- Scaler(s): RabbitMQ (but I don't think that directly matters)
I finally go around to doing the 2.0 upgrade, and I'm a little confused at some performance issues.
I have around 700 RabbitMQ ScaledObjects. I wrote a script to convert all of them from the v1 to v2 format, and then did the upgrade. Just to see it reconcile every object once (to add the finalizers) took ~3 hours. And the logs are full of
Throttling request took 29.426205883s, request: GET:https://10.0.0.1:443/apis/apps/v1/namespaces/[...]/deployments/[...]so I'm guessing it's making an excessive number of API requests, getting throttled, and taking a long time. The part I'm confused about is that a Get request like that should be in the controller-runtime cache already and so shouldn't even hit the apiserver. It wasn't clear to me where in the controller they are even coming from.Expected Behavior
2.0 upgrade should take very little time.
Actual Behavior
2.0 upgrade took many hours during which scaling was unavailable.
Steps to Reproduce the Problem
Logs from KEDA operator
Note that every one of those
...s is a different deployment with no obvious order.Specifications