Mengonfigurasi batas kapasitas pengelola pengontrol


Halaman ini menjelaskan cara mengonfigurasi batas kapasitas keseluruhan (batas kapasitas token bucket) untuk pengelola pengontrol di Config Connector.

Batas kapasitas mengontrol jumlah permintaan yang dibuat Config Connector ke server Kubernetes API. Ada dua setelan:

  • Setelan qps (kueri per detik) menentukan kecepatan rata-rata saat Config Connector dapat membuat permintaan ke server Kubernetes API.

  • Nilai burst memungkinkan lebih banyak permintaan daripada batas qps untuk jangka waktu singkat. Hal ini membantu Config Connector menyelesaikan secara cepat, bahkan selama waktu yang memerlukan lebih banyak kueri ke server Kubernetes API, seperti saat menerapkan batch konfigurasi baru menggunakan GitOps.

Anda dapat menganggap algoritma "token bucket" untuk pembatasan kapasitas seperti ini: bayangkan bucket token kapasitas burst, yang diisi ulang dengan kecepatan qps. Setiap permintaan memerlukan satu token dari bucket. Jika bucket kosong, permintaan akan tertunda hingga token tersedia.

Mengonfigurasi batas kapasitas untuk pengelola pengontrol dengan namespace

Jika Config Connector dikonfigurasi untuk berjalan dalam mode dengan namespace, Anda dapat menggunakan resource kustom NamespacedControllerReconciler untuk mengonfigurasi batas kecepatan klien Kubernetes pengontrol cnrm-controller-manager di namespace yang ditetapkan. Anda dapat mengonfigurasi batas kapasitas untuk pengontrol ini di Config Connector versi 1.119 dan yang lebih baru.

  1. Buat file bernama configure-rate-limit.yaml dan salin YAML berikut ke dalamnya:

    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
    

    Ganti NAMESPACE dengan nama namespace Anda.

  2. Gunakan kubectl apply untuk menerapkan konfigurasi batas kapasitas ke cluster Anda:

    kubectl apply -f configure-rate-limit.yaml
  3. Pastikan konfigurasi berhasil dengan menjalankan perintah berikut:

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

    Output akan menampilkan kolom status.healthy yang ditetapkan ke true.

  4. Pastikan flag --qps dan --burst ditambahkan ke penampung pengelola pengontrol cnrm-controller-manager dengan menjalankan perintah berikut:

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

    Output-nya harus berisi hal berikut:

    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
    

Mengonfigurasi batas kapasitas dalam mode cluster

Mulai versi 1.125, jika Config Connector dikonfigurasi untuk berjalan dalam mode cluster, Anda dapat mengonfigurasi batas kapasitas klien Kubernetes pengontrol cnrm-controller-manager menggunakan resource kustom ControllerReconciler. Penggunaannya mirip dengan mode dengan namespace, tetapi dalam hal ini, Anda harus menggunakan CR ControllerReconciler, bukan NamespacedControllerReconciler, seperti dalam contoh berikut:

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