Configure o limite de taxa do gestor de comandos

Estas páginas descrevem como configurar o limite de taxa geral (limite de taxa do contentor de tokens) para o gestor do controlador no Config Connector.

O limite de taxa controla quantos pedidos o Config Connector faz ao servidor da API Kubernetes. Existem duas definições:

  • A definição qps (consultas por segundo) determina a taxa média à qual o Config Connector pode fazer pedidos ao servidor da API Kubernetes.

  • O valor burst permite mais pedidos do que o limite de qps durante períodos curtos. Isto ajuda o Config Connector a reconciliar rapidamente, mesmo durante períodos que requerem mais consultas ao servidor da API Kubernetes, como quando aplica um novo lote de configuração através do GitOps.

Pode pensar no algoritmo de "token bucket" para limitar a taxa da seguinte forma: imagine um balde com capacidade para burst tokens, que é reabastecido à taxa de qps. Cada pedido requer um token do conjunto. Se o depósito estiver vazio, os pedidos são atrasados até que os tokens fiquem disponíveis.

Configure o limite de velocidade para o gestor do controlador com espaço de nomes

Se o Config Connector estiver configurado para ser executado no modo com espaço de nomes, pode usar o recurso personalizado NamespacedControllerReconciler para configurar o limite de taxa do cliente Kubernetes do controlador cnrm-controller-manager no seu espaço de nomes designado. Pode configurar o limite de taxa para este controlador na versão 1.119 e posterior do Config Connector.

  1. Crie um ficheiro com o nome configure-rate-limit.yaml e copie o seguinte YAML para o mesmo:

    apiVersion: customize.core.cnrm.cloud.google.com/v1beta1
    kind: NamespacedControllerReconciler
    metadata:
      name: cnrm-controller-manager # name must not contain the namespace ID suffix
      namespace: NAMESPACE
    spec:
      rateLimit:
        qps: 80 # the default value is 20
        burst: 40 # the default value is 30
    

    Substitua NAMESPACE pelo nome do seu espaço de nomes.

  2. Use kubectl apply para aplicar a configuração do limite de taxa ao seu cluster:

    kubectl apply -f configure-rate-limit.yaml
  3. Para verificar se a configuração foi bem-sucedida, execute o seguinte comando:

    kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'

    O resultado deve apresentar o campo status.healthy definido como true.

  4. Verifique se as flags --qps e --burst foram adicionadas ao contentor do gestor do controlador cnrm-controller-manager executando o seguinte comando:

    kubectl describe statefulsets -n cnrm-system -l "cnrm.cloud.google.com/scoped-namespace=NAMESPACE"

    O resultado deve conter o seguinte:

    Containers:
    manager:
      Image:      gcr.io/gke-release/cnrm/controller:fd4c42c
      Port:       23232/TCP
      Host Port:  0/TCP
      Command:
        /configconnector/manager
      Args:
        --qps=80
        --burst=40
        --scoped-namespace=config-control
        --prometheus-scrape-endpoint=:8888
    

Configure o limite de taxa no modo de cluster

A partir da versão 1.125, se o Config Connector estiver configurado para ser executado no modo de cluster, pode configurar o limite de taxa do cliente Kubernetes do controlador cnrm-controller-manager através do recurso personalizado ControllerReconciler. A utilização é semelhante à do modo com espaço de nomes, mas, neste caso, deve usar a CR ControllerReconciler em vez de NamespacedControllerReconciler, como no exemplo seguinte:

apiVersion: customize.core.cnrm.cloud.google.com/v1alpha1
kind: ControllerReconciler
metadata:
  name: cnrm-controller-manager
spec:
  rateLimit:
    qps: 80 # the default value is 20
    burst: 40 # the default value is 30