Mengonfigurasi batas kapasitas pengelola pengontrol


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

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

  • Setelan qps (kueri per detik) menentukan tingkat rata-rata di mana Config Connector dapat membuat permintaan ke Kubernetes API.

  • Nilai burst memungkinkan lebih banyak permintaan daripada batas qps dalam waktu singkat. Hal ini membantu Config Connector dapat merekonsiliasi dengan cepat, bahkan selama masa yang memerlukan lebih banyak kueri ke Kubernetes Server API, seperti saat menerapkan batch konfigurasi baru menggunakan GitOps.

Anda dapat menganggap "bucket token" algoritme untuk pembatasan kapasitas seperti ini: bayangkan bucket berisi token burst dengan kapasitas, sedang diisi ulang pada qps besar. Setiap permintaan memerlukan satu token dari bucket. Jika bucket kosong, ditunda sampai token tersedia.

Mengonfigurasi batas kapasitas untuk pengelola pengontrol dengan namespace

Jika Config Connector dikonfigurasi untuk dijalankan di mode namespace, Anda dapat gunakan resource khusus NamespacedControllerReconciler untuk mengonfigurasi tarif batas klien Kubernetes pengontrol cnrm-controller-manager dalam namespace yang ditentukan. Anda dapat mengonfigurasi batas kapasitas untuk di Config Connector versi 1.119 dan yang lebih baru.

  1. Buat file bernama configure-rate-limit.yaml, lalu salin berikut YAML 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 bahwa 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 disetel 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