Configurer la limite de débit du gestionnaire de contrôleurs
Cette page explique comment configurer la limite de débit globale (limite de débit du bucket de jetons) pour le gestionnaire de contrôleurs dans Config Connector.
La limite de débit contrôle le nombre de requêtes que Config Connector envoie au serveur d'API Kubernetes. Deux paramètres sont disponibles :
Le paramètre
qps(requêtes par seconde) détermine le taux moyen auquel Config Connector peut envoyer des requêtes au serveur d'API Kubernetes.La valeur
burstpermet d'envoyer plus de requêtes que la limiteqpspendant de courtes périodes. Cela permet à Config Connector d'effectuer rapidement la réconciliation, même lorsque davantage de requêtes sont nécessaires au serveur d'API Kubernetes, par exemple lors de l'application d'un nouveau lot de configuration à l'aide de GitOps.
Vous pouvez considérer l'algorithme "token bucket" pour la limitation du débit comme suit : imaginez un bucket d'une capacité de burst jetons, qui est rempli au débit qps. Chaque requête nécessite un jeton du bucket. Si le bucket est vide, les requêtes sont retardées jusqu'à ce que des 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 en mode espace de noms, vous pouvez utiliser la ressource personnalisée NamespacedControllerReconciler pour configurer la limite de débit du client Kubernetes du contrôleur cnrm-controller-manager dans l'espace de noms désigné. Vous pouvez configurer la limite de débit pour ce contrôleur dans Config Connector version 1.119 et ultérieure.
Créez un fichier nommé
configure-rate-limit.yamlet copiez-y le YAML suivant :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 30Remplacez
NAMESPACEpar le nom de votre espace de noms.Utilisez
kubectl applypour appliquer la configuration de la limite de débit à votre cluster :kubectl apply -f configure-rate-limit.yaml
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.healthydéfini surtrue.Vérifiez que les indicateurs
--qpset--burstsont ajoutés au conteneur du gestionnaire du contrôleurcnrm-controller-manageren 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
Configurer la limite de débit en mode cluster
À partir de la version 1.125, si Config Connector est configuré pour s'exécuter en mode cluster, vous pouvez configurer la limite de débit du client Kubernetes du contrôleur cnrm-controller-manager à l'aide de la ressource personnalisée ControllerReconciler.
L'utilisation est semblable au mode avec espace de noms, mais dans ce cas, vous devez utiliser le CR ControllerReconciler au lieu de NamespacedControllerReconciler, comme dans l'exemple suivant :
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