Ratenbegrenzung für Controller-Manager konfigurieren
Auf dieser Seite wird beschrieben, wie Sie die Gesamtratenbegrenzung (Token-Bucket-Rate) konfigurieren Limit) für den Controller-Manager in Config Connector.
Mit dem Ratenlimit wird festgelegt, wie viele Anfragen Config Connector an den Kubernetes API-Server sendet. Es gibt zwei Einstellungen:
Mit der Einstellung
qps
(Abfragen pro Sekunde) wird festgelegt, die durchschnittliche Rate, mit der Config Connector Anfragen an den Kubernetes API-ServerDer Wert
burst
ermöglicht für kurze Zeit mehr Anfragen als das Limitqps
. So kann Config Connector schnell abgleichen, auch wenn mehr Abfragen an den Kubernetes API-Server erforderlich sind, z. B. beim Anwenden einer neuen Konfigurationsgruppe mit GitOps.
Ein Token-Bucket zur Ratenbegrenzung wie folgt:
Stellen Sie sich einen Bucket mit burst
Tokens vor, der am qps
wieder aufgeladen wird
zu zahlen. Für jede Anfrage ist ein Token aus dem Bucket erforderlich. Wenn der Bucket leer ist,
-Anfragen werden verzögert, bis Tokens verfügbar sind.
Ratenbegrenzung für den Namespace-Controller-Manager konfigurieren
Wenn Config Connector für die Ausführung im Namespaced-Modus konfiguriert ist, können Sie mit der benutzerdefinierten Ressource NamespacedControllerReconciler
das Ratelimit des Kubernetes-Clients des cnrm-controller-manager
-Controllers in Ihrem angegebenen Namespace konfigurieren. Sie können die Ratenbeschränkung für diesen Controller in Config Connector Version 1.119 und höher konfigurieren.
Erstellen Sie eine Datei mit dem Namen
configure-rate-limit.yaml
und kopieren Sie die folgende YAML-Datei hinein: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
Ersetzen Sie
NAMESPACE
durch den Namen Ihres Namespace:Verwenden Sie
kubectl apply
, um die Konfiguration des Ratenlimits auf Ihren Cluster anzuwenden:kubectl apply -f configure-rate-limit.yaml
Prüfen Sie mit dem folgenden Befehl, ob die Konfiguration erfolgreich ist:
kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'
Die Ausgabe sollte das Feld
status.healthy
mit dem Werttrue
enthalten.Prüfen Sie, ob die Flags
--qps
und--burst
dem Parametercnrm-controller-manager
-Manager-Container. Führen Sie dazu den folgenden Befehl aus:kubectl describe statefulsets -n cnrm-system -l "cnrm.cloud.google.com/scoped-namespace=NAMESPACE"
Die Ausgabe sollte Folgendes enthalten:
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