Configurar o limite de taxa do gerenciador de controladores
Nesta página, descrevemos como configurar o limite de taxa geral (limite de taxa token bucket) para o gerenciador de controladores 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 Config Connector pode fazer solicitações ao servidor da API Kubernetes.O valor
burst
permite mais solicitações do que o limiteqps
por curtos períodos. Isso ajuda o Config Connector a reconciliar rapidamente, mesmo durante períodos que exigem mais consultas ao servidor de API do Kubernetes, como ao aplicar um novo lote de configuração usando o GitOps.
Pense no algoritmo de "token bucket" para limitação de taxa da seguinte maneira: imagine um bucket com capacidade para burst
tokens, que é reabastecido na taxa qps
. Cada solicitação exige um token do bucket. Se o bucket estiver vazio, as solicitações serão atrasadas 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, use o recurso personalizado NamespacedControllerReconciler
para configurar o limite de taxa do cliente do 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/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 namespace.Use
kubectl apply
para aplicar a configuração de limitação 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 de cluster
A partir da versão 1.125, se o Config Connector estiver configurado para ser executado no modo de 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, nesse caso, use o CR ControllerReconciler
em vez de NamespacedControllerReconciler
, como no 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