Skip to content

client-side throttling #757

@mateusz-lubanski-sinch

Description

@mateusz-lubanski-sinch

Error message:

Throttling logs for kustomize-controller:

kubectl logs -n flux-system -f deployments/kustomize-controller | grep 'Waited for'
I1107 10:10:55.887548       7 request.go:682] Waited for 1.044697004s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/authorization.k8s.io/v1beta1?timeout=32s
I1107 10:11:05.913711       7 request.go:682] Waited for 6.196340718s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/iam.aws.crossplane.io/v1alpha1?timeout=32s
I1107 10:11:25.824441       7 request.go:682] Waited for 1.045998726s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/mq.aws.crossplane.io/v1alpha1?timeout=32s
I1107 10:11:35.862387       7 request.go:682] Waited for 3.446082493s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/acmpca.aws.crossplane.io/v1beta1?timeout=32s
I1107 10:11:45.900275       7 request.go:682] Waited for 2.794960921s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/crd.k8s.amazonaws.com/v1alpha1?timeout=32s
I1107 10:11:55.938719       7 request.go:682] Waited for 6.845825892s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/kafka.aws.crossplane.io/v1alpha1?timeout=32s
I1107 10:12:05.966524       7 request.go:682] Waited for 2.846021857s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/apiextensions.k8s.io/v1beta1?timeout=32s
I1107 10:12:15.981709       7 request.go:682] Waited for 6.146203539s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/image.toolkit.fluxcd.io/v1alpha1?timeout=32s
I1107 10:12:25.992888       7 request.go:682] Waited for 6.546170792s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/prometheusservice.aws.crossplane.io/v1alpha1?timeout=32s
I1107 10:12:36.038011       7 request.go:682] Waited for 1.446133559s due to client-side throttling, not priority and fairness, request: GET:https://172.20.0.1:443/apis/notification.aws.crossplane.io/v1alpha1?timeout=32s
...

From all deployed FLUX controllers throttling logs occurs only on kustomize-controller

 kubectl get deployments.apps -n flux-system
helm-controller               1/1     1            1           413d
image-automation-controller   1/1     1            1           413d
image-reflector-controller    1/1     1            1           413d
kustomize-controller          1/1     1            1           413d
notification-controller       1/1     1            1           413d
source-controller             1/1     1            1           413d
ww-gitops-weave-gitops        1/1     1            1           160d

Additional context

kustomize-controller version:

kubectl get deployments.apps -n flux-system kustomize-controller -o json | jq '.spec.template.spec.containers[].image'
"ghcr.io/fluxcd/kustomize-controller:v0.30.0"

--kube-api-burst argument passed to container

kubectl get deployments.apps -n flux-system kustomize-controller -o json | jq '.spec.template.spec.containers[].args'
[
  "--events-addr=http://notification-controller.flux-system.svc.cluster.local./",
  "--watch-all-namespaces",
  "--log-level=info",
  "--log-encoding=json",
  "--enable-leader-election",
  "--kube-api-burst=250"
]

We faced above issue after deploying crossplane with provider-aws to our cluster which added bunch of new CRD's
Today we have 173 API GroupVersions on our cluster.:

kubectl api-versions | wc -l
173

Client side throttling issue is explained in detail here: https://github.com/crossplane/crossplane/blob/master/design/one-pager-crd-scaling.md#client-side-throttling

Expected behavior

After setting --kube-api-burst container argument throttling logs should disappear or Waited for time should be close to 1s (e.g. Waited for 1.045801429s due to client-side throttling)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions