הגדרת הגבלת קצב של יצירת בקשות במנהל הבקרים
בדף הזה נסביר איך להגדיר את ההגבלה הכוללת על קצב יצירת הבקשות (הגבלה על קצב יצירת הבקשות של מאגר האסימונים) עבור מנהל הבקרים ב-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 ואילך.
יוצרים קובץ בשם
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בשם של מרחב השמות.משתמשים בפקודה
kubectl applyכדי להחיל את הגדרת הגבלת קצב הבקשות על האשכול:kubectl apply -f configure-rate-limit.yaml
מריצים את הפקודה הבאה כדי לוודא שההגדרה הצליחה:
kubectl get namespacedcontrollerreconciler cnrm-controller-manager -n NAMESPACE -o jsonpath='{.status.healthy}'הפלט צריך להציג את השדה
status.healthyעם הערךtrue.מריצים את הפקודה הבאה כדי לוודא שהדגלים
--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