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 limiteqps
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.
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.Use
kubectl apply
para aplicar a configuração do limite de taxa ao cluster:kubectl apply -f configure-rate-limit.yaml
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 comotrue
.Verifique se as flags
--qps
e--burst
foram adicionadas ao contêiner do gerenciador do controladorcnrm-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