Configura il limite di velocità del gestore del controller
Questa pagina descrive come configurare il limite di frequenza complessivo (limite di frequenza del bucket di token) per il gestore del controller in Config Connector.
Il limite di frequenza controlla il numero di richieste inviate da Config Connector al server API Kubernetes. Esistono due impostazioni:
L'impostazione
qps
(query al secondo) determina la frequenza media con cui Config Connector può inviare richieste al server API Kubernetes.Il valore
burst
consente più 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 dell'API Kubernetes, ad esempio quando viene applicato un nuovo batch di configurazione utilizzando GitOps.
Puoi considerare l'algoritmo "bucket di token" per il limite di frequenza nel seguente modo:
immagina un bucket di token con una capacità di burst
, che viene rifornito alla frequenza di qps
. Ogni richiesta richiede un token dal bucket. Se il bucket è vuoto,
le richieste vengono ritardate fino a quando i token non diventano disponibili.
Configura il limite di frequenza per il gestore del controller con spazio dei nomi
Se Config Connector è configurato per funzionare in modalità con spazi 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
controllore in Config Connector versione 1.119 e successive.
Crea un file denominato
configure-rate-limit.yaml
e copia al suo interno il seguente codice YAML: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
Sostituisci
NAMESPACE
con il nome dello 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 il seguente 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 contenitore del gestore del controllercnrm-controller-manager
eseguendo il seguente 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 velocità 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 nome nello spazio dei nomi, ma in questo caso devi utilizzare la RP ControllerReconciler
anziché NamespacedControllerReconciler
, come nell'esempio seguente:
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