Configura il limite di frequenza di Controller Manager
Queste pagine descrivono come configurare il limite di frequenza complessivo (limite di frequenza del token bucket) per il controller manager in Config Connector.
Il limite di frequenza controlla il numero di richieste che Config Connector invia al server API Kubernetes. Esistono due impostazioni:
L'impostazione
qps
(query al secondo) determina la velocità media con cui Config Connector può effettuare richieste al server API Kubernetes.Il valore
burst
consente un numero maggiore di richieste rispetto al limiteqps
per brevi periodi. In questo modo, Config Connector può eseguire la riconciliazione rapidamente, anche durante i periodi che richiedono più query al server API Kubernetes, ad esempio quando si applica un nuovo batch di configurazione utilizzando GitOps.
Puoi pensare all'algoritmo "token bucket" per limitazione di frequenza in questo modo:
immagina un bucket con una capacità di burst
token, che viene riempito alla velocità di qps
. Ogni richiesta richiede un token dal bucket. Se il bucket è vuoto,
le richieste vengono ritardate finché non sono disponibili token.
Configura il limite di frequenza per il controller manager con spazio dei nomi
Se Config Connector è configurato per l'esecuzione in
modalità con spazio dei nomi, puoi
utilizzare la risorsa personalizzata NamespacedControllerReconciler
per configurare il limite di frequenza
del client Kubernetes del controller cnrm-controller-manager
nello spazio dei nomi designato. Puoi configurare il limite di frequenza per questo controller in Config Connector versione 1.119 e successive.
Crea un file denominato
configure-rate-limit.yaml
e copia il seguente codice YAML al suo interno: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
Sostituisci
NAMESPACE
con il nome del tuo spazio dei nomi.Utilizza
kubectl apply
per applicare la configurazione del limite di frequenza al tuo cluster:kubectl apply -f configure-rate-limit.yaml
Verifica che la configurazione sia andata a buon fine eseguendo questo comando:
kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'
L'output dovrebbe mostrare il campo
status.healthy
impostato sutrue
.Verifica che i flag
--qps
e--burst
siano aggiunti al container del gestore del controllercnrm-controller-manager
eseguendo questo comando:kubectl describe statefulsets -n cnrm-system -l "cnrm.cloud.google.com/scoped-namespace=NAMESPACE"
L'output dovrebbe contenere quanto segue.
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
Configurare il limite di frequenza in modalità cluster
A partire dalla versione 1.125, se Config Connector è configurato per l'esecuzione in modalità cluster, puoi configurare il limite di frequenza del client Kubernetes del controller cnrm-controller-manager
utilizzando la risorsa personalizzata ControllerReconciler
.
L'utilizzo è simile alla modalità con spazi dei nomi, ma in questo caso devi
utilizzare la RP ControllerReconciler
anziché NamespacedControllerReconciler
,
come nel seguente esempio:
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