Configura il limite di frequenza del gestore 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 limite qps 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 pensare al "token bucket" algoritmo per la limitazione di frequenza come questo: immagina un bucket con burst token di capacità, che viene ricaricato presso qps di conversione. 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 velocità per il gestore del controller con spazio dei nomi

Se Config Connector è configurato per l'esecuzione in con spazio dei nomi, puoi usa la risorsa personalizzata NamespacedControllerReconciler per configurare la tariffa limite del client Kubernetes del controller cnrm-controller-manager nello spazio dei nomi designato. Puoi configurare la limitazione di frequenza in Config Connector versione 1.119 e successive.

  1. Crea un file denominato configure-rate-limit.yaml e copia seguenti YAML al suo interno:

    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 del tuo spazio dei nomi.

  2. Utilizza kubectl apply per applicare la configurazione della limitazione di frequenza al tuo cluster:

    kubectl apply -f configure-rate-limit.yaml
  3. Verifica che la configurazione sia riuscita eseguendo questo comando:

    kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'

    L'output dovrebbe mostrare il campo status.healthy impostato su true.

  4. Verifica che i flag --qps e --burst siano aggiunti al file il container gestore del controller cnrm-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