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 Limit qps. 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.

  1. 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:

  2. Verwenden Sie kubectl apply, um die Konfiguration des Ratenlimits auf Ihren Cluster anzuwenden:

    kubectl apply -f configure-rate-limit.yaml
  3. 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 auf true gesetzt sein.

  4. Prüfen Sie mit dem folgenden Befehl, ob die Flags --qps und --burst dem Manager-Container des cnrm-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