Configurar o limite de taxa do administrador do controlador


Esta página descreve como configurar o limite de taxa geral (limite de taxa de balde de token) para o gerenciador de controlador no Config Connector.

O limite de taxa controla quantas solicitações o Config Connector faz ao servidor da API Kubernetes. Há duas configurações:

  • A configuração qps (consultas por segundo) determina a taxa média em que o conector de configuração pode fazer solicitações para o servidor da API Kubernetes.

  • O valor burst permite mais solicitações do que o limite qps por períodos curtos. Isso ajuda o Config Connector a reconciliar rapidamente, mesmo em momentos que exigem mais consultas ao servidor da API do Kubernetes, como ao aplicar um novo lote de configuração usando o GitOps.

Pense no algoritmo "bucket de token" para limitação de taxa da seguinte maneira: imagine um bucket de tokens burst de capacidade sendo reabastecido na taxa qps. Cada solicitação requer um token do bucket. Se o bucket estiver vazio, as solicitações serão adiadas até que os tokens fiquem disponíveis.

Configurar o limite de taxa para o gerenciador de controladores com namespace

Se o Config Connector estiver configurado para ser executado no modo com namespace, é possível use o recurso personalizado NamespacedControllerReconciler para configurar a taxa limite do cliente Kubernetes do controlador cnrm-controller-manager no namespace designado. É possível configurar a limitação de taxa no Config Connector versão 1.119 e mais recentes.

  1. Crie um arquivo chamado configure-rate-limit.yaml e copie o YAML a seguir nele:

    apiVersion: customize.core.cnrm.cloud.google.com/v1alpha1
    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 namespace.

  2. Use kubectl apply para aplicar a configuração do limite de taxa ao 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}'

    A saída deve exibir o campo status.healthy definido como true.

  4. Verifique se as flags --qps e --burst foram adicionadas ao contêiner do gerenciador do controlador cnrm-controller-manager executando o seguinte comando:

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

    A saída precisa 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