Ratenlimit für den Controller-Manager konfigurieren
Auf dieser Seite wird beschrieben, wie Sie das allgemeine Ratenlimit (Token-Bucket-Ratenlimit) für den Controller-Manager in Config Connector konfigurieren.
Das Ratenlimit steuert, wie viele Anfragen Config Connector an den Kubernetes API-Server sendet. Es gibt zwei Einstellungen:
Die Einstellung
qps
(Anfragen 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 Zeiträume mehr Anfragen als das Limitqps
. So kann Config Connector schnell abgleichen, auch wenn mehr Anfragen an den Kubernetes API-Server erforderlich sind, z. B. wenn mit GitOps ein neuer Batch von Konfigurationen angewendet wird.
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 der Rate qps
wieder 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 die benutzerdefinierte Ressource NamespacedControllerReconciler
verwenden, um das Ratenlimit des Kubernetes-Clients des cnrm-controller-manager
-Controllers in Ihrem angegebenen Namespace zu konfigurieren. Sie können das Ratenlimit 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/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 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 war:
kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'
In der Ausgabe sollte das Feld
status.healthy
auftrue
gesetzt sein.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
Ab Version 1.125 können Sie, wenn Config Connector für die Ausführung im Clustermodus konfiguriert ist, das Ratenlimit des Kubernetes-Clients des cnrm-controller-manager
-Controllers mit der benutzerdefinierten Ressource ControllerReconciler
konfigurieren.
Die Verwendung ähnelt dem Namespace-Modus. In diesem Fall sollten Sie jedoch die benutzerdefinierte Region 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