Configurar el límite de frecuencia del gestor de controladores


En esta página se describe cómo configurar el límite de frecuencia general (límite de frecuencia de contenedor de tokens) del gestor de controladores en Config Connector.

El límite de frecuencia controla el número de solicitudes que Config Connector envía al servidor de la API de Kubernetes. Hay dos ajustes:

  • El ajuste qps (consultas por segundo) determina la frecuencia media a la que Config Connector puede enviar solicitudes al servidor de la API de Kubernetes.

  • El valor burst permite enviar más solicitudes que el límite qps durante periodos cortos. Esto ayuda a Config Connector a conciliar rápidamente, incluso en momentos en los que se requieren más consultas al servidor de la API de Kubernetes, como cuando se aplica un nuevo lote de configuración mediante GitOps.

Puedes imaginar el algoritmo de "cubo de tokens" para limitar la frecuencia de la siguiente manera: imagina un cubo con una capacidad de burst tokens que se rellena a una frecuencia de qps. Cada solicitud requiere un token del contenedor. Si el contenedor está vacío, las solicitudes se retrasan hasta que haya tokens disponibles.

Configurar el límite de frecuencia del gestor de controladores con espacio de nombres

Si Config Connector está configurado para ejecutarse en modo de espacio de nombres, puedes usar el recurso personalizado NamespacedControllerReconciler para configurar el límite de frecuencia del cliente de Kubernetes del controlador cnrm-controller-manager en el espacio de nombres que hayas designado. Puedes configurar el límite de frecuencia de este controlador en Config Connector 1.119 y versiones posteriores.

  1. Crea un archivo llamado configure-rate-limit.yaml y copia el siguiente YAML en él:

    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
    

    Sustituye NAMESPACE por el nombre de tu espacio de nombres.

  2. Usa kubectl apply para aplicar la configuración del límite de frecuencia a tu clúster:

    kubectl apply -f configure-rate-limit.yaml
  3. Para comprobar que la configuración se ha realizado correctamente, ejecuta el siguiente comando:

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

    En el resultado, el campo status.healthy debe tener el valor true.

  4. Para comprobar que las marcas --qps y --burst se han añadido al contenedor del gestor del controlador cnrm-controller-manager, ejecuta el siguiente comando:

    kubectl describe statefulsets -n cnrm-system -l "cnrm.cloud.google.com/scoped-namespace=NAMESPACE"

    El resultado debe contener lo siguiente:

    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
    

Configurar el límite de frecuencia en el modo de clúster

A partir de la versión 1.125, si Config Connector está configurado para ejecutarse en modo de clúster, puedes configurar el límite de frecuencia del cliente de Kubernetes del controlador cnrm-controller-manager con el recurso personalizado ControllerReconciler. El uso es similar al del modo con espacio de nombres, pero en este caso debes usar el CR ControllerReconciler en lugar de NamespacedControllerReconciler, como en el siguiente ejemplo:

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