הגדרת הגבלת קצב של יצירת בקשות במנהל הבקרים

בדף הזה נסביר איך להגדיר את ההגבלה הכוללת על קצב יצירת הבקשות (הגבלה על קצב יצירת הבקשות של מאגר האסימונים) עבור מנהל הבקרים ב-Config Connector.

הגבלת הקצב של יצירת הבקשות קובעת כמה בקשות Config Connector שולח לשרת Kubernetes API. יש שתי הגדרות:

  • ההגדרה qps (שאילתות לשנייה) קובעת את הקצב הממוצע שבו Config Connector יכול לשלוח בקשות לשרת Kubernetes API.

  • הערך של burst מאפשר יותר בקשות מהמגבלה של qps לתקופות קצרות. זה עוזר ל-Config Connector לבצע במהירות התאמה, גם בזמנים שבהם נדרשות יותר שאילתות לשרת ה-API של Kubernetes, למשל כשמחילים קבוצה חדשה של הגדרות באמצעות GitOps.

אפשר לחשוב על אלגוריתם 'token bucket' להגבלת קצב הבקשות באופן הבא: תארו לעצמכם מאגר עם קיבולת של burst אסימונים, שממולא מחדש בקצב של qps. כל בקשה דורשת טוקן אחד מהקטגוריה. אם המאגר ריק, הבקשות מתעכבות עד שיהיו אסימונים זמינים.

הגדרת הגבלת קצב של יצירת בקשות למנהל בקרים עם מרחב שמות

אם Config Connector מוגדר לפעול במצב מרחב שמות, אפשר להשתמש במשאב המותאם אישית NamespacedControllerReconciler כדי להגדיר את מגבלת הקצב של לקוח Kubernetes של בקר cnrm-controller-manager במרחב השמות שמוגדר. אפשר להגדיר מגבלת קצב עבור בקר זה ב-Config Connector מגרסה 1.119 ואילך.

  1. יוצרים קובץ בשם configure-rate-limit.yaml ומעתיקים אליו את קוד ה-YAML הבא:

    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
    

    מחליפים את 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
    

הגדרת הגבלת קצב במצב אשכול

החל מגרסה 1.125, אם Config Connector מוגדר להפעלה במצב cluster, אפשר להגדיר את מגבלת הקצב של לקוח Kubernetes של בקר cnrm-controller-manager באמצעות המשאב המותאם אישית ControllerReconciler. השימוש דומה למצב עם מרחב שמות, אבל במקרה הזה צריך להשתמש ב-CR‏ ControllerReconciler במקום ב-NamespacedControllerReconciler, כמו בדוגמה הבאה:

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