配置控制器管理器速率限制


本页面介绍了如何配置总体速率限制(令牌桶速率) 限制)。

速率限制用于控制 Config Connector 向 Kubernetes API 服务器发出的请求数量。有两种设置:

  • qps(每秒查询次数)设置决定了 Config Connector 可以向 Kubernetes API 服务器发出请求的平均速率。

  • burst 值允许超出 qps 限制的请求数量 。这有助于 Config Connector 协调 即使在需要更多查询时 Kubernetes API 服务器,例如使用 GitOps 应用新批次的配置时。

您可以将“令牌桶”视为速率限制的算法,如下所示: 想象一下有一桶容量为 burst 的令牌,在qps 。每个请求都需要从令牌桶中获取一个令牌。如果令牌桶为空,系统会延迟请求,直到有令牌可用。

为命名空间型控制器管理器配置速率限制

如果将 Config Connector 配置为在 命名空间型模式 使用NamespacedControllerReconciler自定义资源配置费率 cnrm-controller-manager 控制器的 Kubernetes 客户端的上限 指定命名空间您可以为这种资源配置速率限制 控制器(位于 Config Connector 1.119 及更高版本中)。

  1. 创建名为 configure-rate-limit.yaml 的文件并将以下 YAML 复制到其中:

    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
    

    NAMESPACE 替换为您的命名空间名称。

  2. 使用 kubectl apply 将速率限制配置应用于您的集群:

    kubectl apply -f configure-rate-limit.yaml
  3. 运行以下命令来验证配置是否成功:

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

    输出应显示 status.healthy 字段已设置为 true

  4. 通过运行以下命令,验证 --qps--burst 标志是否已添加到 cnrm-controller-manager 控制器的管理器容器中:

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

    输出应该包含以下内容:

    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