הגדרת התאמה רב-ממדית של Pod לעומס

התאמה אוטומטית לעומס (automatic scaling) של Pods רב-ממדית מאפשרת לכם לבחור כמה דרכים להתאמת הגודל של האשכולות. בעזרת שינוי גודל אוטומטי של Pod בכמה ממדים, אתם יכולים להשתמש בשינוי גודל אופקי על סמך מעבד (CPU) ובשינוי גודל אנכי על סמך זיכרון בו-זמנית.

אובייקט MultidimPodAutoscaler משנה את בקשות הזיכרון ומוסיף רפליקות כדי שהשימוש הממוצע במעבד של כל רפליקה יתאים לשימוש היעד.

דרישות מוקדמות

שימוש בהתאמה אוטומטית של קבוצות Pod לעומס בכמה ממדים

בדוגמה הזו אנחנו מראים איך ליצור פריסה ואובייקט MultidimPodAutoscalerכדי להגדיר את הפריסה כך שתתבצע בה קנה מידה אוטומטי.

יצירת פריסה

כדי ליצור MultidimPodAutoscaler, צריך קודם ליצור את עומס העבודה שהוא עוקב אחריו. בקובץ php-apache.yaml מצוין ערך לבקשות CPU:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 80
        resources:
        # Since MPA does not specify CPU requests, you must specify a request in
        # the Deployment
          limits:
            cpu: 500m
          requests:
            cpu: 200m

כדי ליצור את הפריסה, מחילים את המניפסט php-apache.yaml:

kubectl apply -f php-apache.yaml

יצירת MultidimPodAutoscaler

אחרי שיוצרים את הפריסה, אפשר ליצור אובייקט MultidimPodAutoscaler. במניפסט MultidimPodAutoscaler הבא, מספר הרפליקות ובקשות הזיכרון מותאמים אוטומטית על סמך הערכים שאתם מציינים.

מידע נוסף על השדות בדוגמה הזו מופיע בקטע הפניית API.

apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
  name: php-apache-autoscaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  goals:
    metrics:
    - type: Resource
      resource:
      # Define the target CPU utilization request here
        name: cpu
        target:
          type: Utilization
          averageUtilization: 60
  constraints:
    global:
      minReplicas: 1
      maxReplicas: 5
    containerControlledResources: [ memory ]
    container:
    - name: '*'
    # Define boundaries for the memory request here
      requests:
        minAllowed:
          memory: 1Gi
        maxAllowed:
          memory: 2Gi
  policy:
    updateMode: Auto

כדי ליצור את MultidimPodAutoscaler, מחילים את php-apache-autoscaler.yaml manifest:

kubectl apply -f php-apache-autoscaler.yaml

צפייה ב-MultidimPodAutoscaler

כדי להציג את כל האובייקטים של MultidimPodAutoscaler, משתמשים בפקודה kubectl get:

kubectl get mpa

מחיקת MultidimPodAutoscaler

כדי למחוק אובייקט MultidimPodAutoscaler, משתמשים בפקודה kubectl delete:

kubectl delete -f php-apache-autoscaler.yaml

הפניית API

בקטעים הבאים מפורטים השדות שאפשר להוסיף לאובייקט MultidimPodAutoscaler.

כל השדות הם בשפה apiVersion v1beta1 autoscaling.gke.io.

MultidimPodAutoscaler

MultidimPodAutoscaler היא ההגדרה של כלי להתאמה אוטומטית של Pods רב-ממדיים, שמנהל באופן אוטומטי את משאבי ה-Pods ואת המספר שלהם על סמך נתוני שימוש היסטוריים ונתוני שימוש בזמן אמת.

שדה סוג תיאור
metadata ObjectMeta מטא-נתונים סטנדרטיים של אובייקטים.
spec MultidimPodAutoscalerSpec ההתנהגות הרצויה של הכלי הרב-ממדי להתאמת גודל ה-Pod באופן אוטומטי.
status MultidimPodAutoscalerStatus הסטטוס האחרון שנצפה של קנה המידה האוטומטי של Pod רב-ממדי.

MultidimPodAutoscalerSpec

MultidimPodAutoscalerSpec הוא המפרט שמגדיר את ההתנהגות של המידרוג האוטומטי.

שדה סוג תיאור
ScaleTargetRef autoscaling.CrossVersionObjectReference הפניה שמצביעה על משאב יעד להרחבה (עם משאב המשנה Scale).
Goals *MultidimGoals מטרות שהכלי האוטומטי לשינוי גודל של Pod רב-ממדי מנסה להשיג ולשמור עליהן.
Constraints *MultidimConstraints תיאור האילוצים של התאמה אוטומטית לעומס. המגבלות חשובות יותר מהיעדים. אם המגבלות חוסמות יעד מסוים, לא תהיה אפשרות להשיג את היעד הזה. לדוגמה, אם תגיעו למספר המקסימלי של העתקים, לא תוכלו להגדיל את הקיבולת גם אם יהיה צורך בכך.
Policy *MultidimPolicy המדיניות מאפשרת לציין איך ההמלצות ייושמו.

MultidimGoals

MultidimGoals הן יעדים שהכלי האוטומטי לשינוי גודל של Pod רב-ממדי מנסה להשיג.

שדה סוג תיאור
Metrics []MetricSpec מכיל את רשימת המדדים יחד עם הערך הרצוי. הכלי לשינוי גודל ה-Pod באופן אוטומטי בכמה ממדים מנסה לשמור על ערכים קרובים לערכים הרצויים.

MultidimConstraints

MultidimConstraints תיאור האילוצים של התאמה אוטומטית לעומס. אילוצים מקבלים עדיפות על פני יעדים.

שדה סוג תיאור
Global *GlobalConstraints אילוצים שחלים על האפליקציה כולה.
Pod *PodConstraints אילוצים שחלים על Pods יחידים מהאפליקציה המטורגטת.
ContainerControlledResources []ResourceName משאבי מאגר תגים שצריכים להיות בשליטת הכלי לשינוי גודל אוטומטי. הערך הנתמך היחיד הוא memory.
Container []ContainerConstraints אילוצים שחלים על קונטיינרים של Pod.

ResourceConstraints

ResourceConstraints מגדירים את הכמות המינימלית והמקסימלית של משאבים שאפשר להקצות לקונטיינר, ל-Pod או לאפליקציה.

שדה סוג תיאור
MinAllowed ResourceList הכמות המינימלית של משאבים שאפשר להקצות. אם לא מציינים ערך, המערכת משתמשת בערך 0.
MaxAllowed ResourceList הכמות המקסימלית של משאבים שאפשר להקצות. אם לא מציינים את הערך הזה, אין מגבלות על הכמות המקסימלית של משאבים.

GlobalConstraints

GlobalConstraints מגדירות את האילוצים שחלים על האפליקציה כולה. המגבלות האלה כוללות את מספר העותקים או את הכמות הכוללת של המשאבים.

שדה סוג תיאור
MinReplicas *Int32 המספר המינימלי של רפליקות שיכולות להיות לאפליקציה. אם לא מציינים ערך, המערכת משתמשת בערך 1.
MaxReplicas *Int32 המספר המקסימלי של העתקים שהאפליקציה יכולה לכלול. אם לא מציינים את הערך הזה, אין הגבלות על מספר הרפליקות המקסימלי.
Requests *ResourceConstraints הכמות המינימלית והמקסימלית של משאבים שאפליקציה יכולה לבקש, בסיכום של כל הפודים.

PodConstraints

PodConstraints מגדירים את הכמות המינימלית והמקסימלית של משאבים שיחידת Pod יכולה לבקש, בסיכום של כל הקונטיינרים ששייכים ליחידת ה-Pod.

שדה סוג תיאור
Requests *ResourceConstraints הכמות המינימלית והמקסימלית של משאבים ש-Pod יחיד יכול לבקש, בסיכום של כל הקונטיינרים ששייכים ל-Pod.

ContainerConstraints

ContainerConstraints הן מגבלות שחלות על קונטיינרים של Pod.

שדות סוג תיאור
Name String שם הקונטיינר שעבורו מצוינים האילוצים. אפשר גם להשתמש ב-* כדי לציין אילוצים לכל הקונטיינרים ב-Pod.
Requests *ResourceConstraints הכמות המינימלית והמקסימלית של משאבים שהכלי המכיל שצוין יכול לבקש.

UpdateMode

אפשר להשתמש בלחצן UpdateMode כדי לקבוע איך להחיל את ההמלצות המחושבות.

שדות סוג תיאור
AutoUpdates UpdateMode = "Auto" המשמעות של 'עדכונים אוטומטיים' היא שאפשר להחיל את כל ההמלצות לשינוי גודל באופן אוטומטי בכל שלב.

MultidimPolicy

שדות סוג תיאור
Update UpdateMode הגדרת אופן היישום של ההמלצות. ערך ריק גורם לכשל באימות.

MultidimPodAutoscalerStatus

MultidimPodAutoscalerStatus מתאר את מצב זמן הריצה של הכלי להתאמה אוטומטית.

שדות סוג תיאור
ObservedGeneration *Int64 הדור האחרון שנצפה על ידי הכלי הזה לשינוי גודל אוטומטי.
RecommendedPodResources *RecommendedPodResources הכמות האחרונה של משאבים שהמערכת לשינוי גודל אוטומטי המליצה עליהם עבור ה-Pods המבוקרים.
CurrentReplicas Int32 CurrentReplicas הוא המספר הנוכחי של רפליקות של Pods שמנוהלות על ידי הסקיילר האוטומטי הזה, כפי שנראה לאחרונה על ידי הסקיילר האוטומטי.
DesiredReplicas Int32 DesiredReplicas הוא מספר הרפליקות הרצוי של ה-Pods שמנוהלים על ידי הסקיילר האוטומטי הזה, כפי שחושב לאחרונה על ידי הסקיילר האוטומטי.
CurrentMetrics []autoscaling.MetricStatus מצב הקריאה האחרון של המדדים שנעשה בהם שימוש במידרוג האוטומטי הזה.
Conditions []metav1.Condition Conditions הוא קבוצת התנאים שנדרשים כדי שהמידרוג האוטומטי הזה יבצע מידרוג של היעד שלו, ומציין אם התנאים האלה מתקיימים או לא.

המאמרים הבאים