Configurer la limite de débit du gestionnaire de contrôleurs


Cette page explique comment configurer la limite de débit globale (taux de seau ) pour le gestionnaire de contrôleurs dans Config Connector.

La limite de débit contrôle le nombre de requêtes envoyées par Config Connector au Serveur d'API Kubernetes. Il existe deux paramètres :

  • Le paramètre qps (requêtes par seconde) détermine la fréquence moyenne à laquelle Config Connector peut envoyer des requêtes au Serveur d'API Kubernetes.

  • La valeur burst permet d'envoyer plus de requêtes que la limite qps pendant de courtes périodes. Cela permet à Config Connector rapidement, même pendant les périodes où il faut plus de requêtes au système Kubernetes serveur d'API, par exemple lors de l'application d'un nouveau lot de configuration à l'aide de GitOps.

Vous pouvez considérer l'algorithme de "token bucket" pour la limitation de débit comme suit : imaginez un seau de jetons de capacité burst, qui est rempli au débit qps. Chaque requête nécessite un jeton du bucket. Si le bucket est vide, requêtes sont retardés jusqu'à ce que les jetons soient disponibles.

Configurer la limite de débit pour le gestionnaire de contrôleurs avec espace de noms

Si Config Connector est configuré pour s'exécuter dans mode espace de noms, vous pouvez utilisez la ressource personnalisée NamespacedControllerReconciler pour configurer le tarif limite du client Kubernetes du contrôleur cnrm-controller-manager dans l'espace de noms désigné. Vous pouvez configurer la limitation du débit pour dans Config Connector 1.119 et versions ultérieures.

  1. Créez un fichier nommé configure-rate-limit.yaml et copiez-y le YAML ci-dessous :

    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
    

    Remplacez NAMESPACE par le nom de votre espace de noms.

  2. Utilisez kubectl apply pour appliquer la configuration de la limite de débit à votre cluster :

    kubectl apply -f configure-rate-limit.yaml
  3. Vérifiez que la configuration a réussi en exécutant la commande suivante :

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

    Le résultat doit afficher le champ status.healthy défini sur true.

  4. Vérifiez que les options --qps et --burst sont ajoutées au le conteneur du gestionnaire du contrôleur cnrm-controller-manager en exécutant la commande suivante:

    kubectl describe statefulsets -n cnrm-system -l "cnrm.cloud.google.com/scoped-namespace=NAMESPACE"

    La sortie doit contenir les éléments suivants :

    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