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-Server

  • Der Wert burst ermöglicht für kurze Zeit mehr Anfragen als das Limit qps. 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.

  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/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:

  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 ist:

    kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'

    Die Ausgabe sollte das Feld status.healthy mit dem Wert true enthalten.

  4. Prüfen Sie, ob die Flags --qps und --burst dem Parameter cnrm-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