Ratenbegrenzung für den Controller-Manager konfigurieren
Auf dieser Seite wird beschrieben, wie Sie die Gesamtrate (Token-Bucket-Geschwindigkeitslimit) für den Controller-Manager in Config Connector konfigurieren.
Mit der Ratenbegrenzung wird festgelegt, wie viele Anfragen Config Connector an den Kubernetes API-Server sendet. Es gibt zwei Einstellungen:
Die Einstellung
qps
(Abfragen pro Sekunde) bestimmt die durchschnittliche Rate, mit der Config Connector Anfragen an den Kubernetes API-Server senden kann.Der 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.
Sie können sich den Token-Bucket-Algorithmus für die Ratenbegrenzung so vorstellen: Stellen Sie sich einen Bucket mit einer Kapazität von burst
Tokens vor, der mit einer Rate von qps
aufgefüllt wird. Für jede Anfrage ist ein Token aus dem Bucket erforderlich. Wenn der Bucket leer ist, werden Anfragen 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 der Ratenbeschränkung auf Ihren Cluster anzuwenden:kubectl apply -f configure-rate-limit.yaml
Prüfen Sie mit dem folgenden Befehl, ob die Konfiguration erfolgreich war:
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 mit dem folgenden Befehl, ob die Flags
--qps
und--burst
dem Manager-Container descnrm-controller-manager
-Controllers hinzugefügt wurden: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
Ratenlimit im Clustermodus konfigurieren
Wenn Config Connector ab Version 1.125 für den Betrieb im Clustermodus konfiguriert ist, können Sie die Ratenbeschränkung des Kubernetes-Clients des cnrm-controller-manager
-Controllers mithilfe der benutzerdefinierten Ressource ControllerReconciler
konfigurieren.
Die Verwendung ähnelt dem Namespace-Modus, aber in diesem Fall sollten Sie die CR-Zeichenfolge ControllerReconciler
anstelle von NamespacedControllerReconciler
verwenden, wie im folgenden Beispiel:
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