Configurar o limite de taxa do gerenciador de controladores
Esta página descreve como configurar o limite de taxa geral (limite de taxa de token bucket) 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 de capacidade burst
sendo reabastecido na taxa
qps
. Cada solicitação exige um token do bucket. Se o bucket estiver vazio,
as solicitações serão adiadas até que os tokens estejam disponíveis.
Configurar o limite de taxa para o gerenciador de controlador com namespace
Se o Config Connector estiver configurado para ser executado no
modo com namespace, você poderá
usar o recurso personalizado NamespacedControllerReconciler
para configurar o limite de taxa
do cliente Kubernetes do controlador cnrm-controller-manager
no namespace designado. É possível configurar o limite de taxa para esse
controlador 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 vai mostrar 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
Configurar o limite de taxa no modo cluster
A partir da versão 1.125, se o Config Connector estiver configurado para ser executado no modo
cluster, será possível configurar o limite de taxa do cliente Kubernetes do controlador cnrm-controller-manager
usando o recurso personalizado ControllerReconciler
.
O uso é semelhante ao modo com namespace, mas, neste caso, você precisa
usar o CR ControllerReconciler
em vez de NamespacedControllerReconciler
,
conforme o exemplo a seguir:
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