בחירת סוגי מחשוב ל-Pods של Autopilot

במאמר הזה נסביר איך לבחור סוגים ספציפיים של מחשוב כדי להריץ עומסי עבודה עם דרישות חומרה ייחודיות באשכולות Autopilot של Google Kubernetes Engine‏ (GKE). לפני שקוראים את המסמך הזה, חשוב להכיר את המושג סוגי מחשוב ב-GKE Autopilot.

סקירה כללית על מחלקות מחשוב בטייס אוטומטי

ב-Autopilot יש סוגי מחשוב שנועדו להריץ עומסי עבודה עם דרישות חומרה ספציפיות. הסוגים האלה של מחשוב שימושיים לעומסי עבודה כמו משימות של למידת מכונה ו-AI, או להפעלת מסדי נתונים עם תנועה גבוהה בזמן אמת.

הסוגים האלה של מחשוב הם קבוצת משנה של סדרות המכונות ב-Compute Engine, והם מציעים גמישות מעבר לסוג המחשוב הכללי שמוגדר כברירת מחדל בטייס האוטומטי. לדוגמה, המחלקה Scale-Out משביתה את הריבוי נימים הסימולטני, כך שכל vCPU הוא ליבה פיזית אחת.

בהתאם לצרכים של ה-Pod שלכם, אתם יכולים להגדיר את ה-Pods הרגילים של Autopilot או את ה-Pods של Spot כך שיבקשו צמתים שמגובים על ידי מחלקות המחשוב האלה. אפשר גם לבקש ארכיטקטורת CPU ספציפית, כמו Arm, בכיתות מחשוב שתומכות בארכיטקטורה הזו.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

בקשה של מחלקת מחשוב ב-Autopilot Pod

כדי להנחות את Autopilot למקם את ה-Pods שלכם בסוג ספציפי של מחשוב, צריך לציין את התווית cloud.google.com/compute-class ב-nodeSelector או בכלל זיקה של צומת, כמו בדוגמאות הבאות:

nodeSelector

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          nodeSelector:
            cloud.google.com/compute-class: "COMPUTE_CLASS"
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
    

מחליפים את COMPUTE_CLASS בשם סוג המכונה בהתאם לתרחיש לדוגמה, למשל Scale-Out. אם בוחרים באפשרות Performance, אפשר גם לבחור סדרת מכונות של Compute Engine בבורר הצמתים. אם לא מציינים סדרת מכונות, GKE משתמש בסדרת מכונות C4 בהתאם לזמינות האזורית. הוראות מפורטות מופיעות במאמר בנושא הפעלת עומסי עבודה עתירי CPU עם ביצועים אופטימליים.

nodeAffinity

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          terminationGracePeriodSeconds: 25
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
                ephemeral-storage: "1Gi"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: cloud.google.com/compute-class
                    operator: In
                    values:
                    - "COMPUTE_CLASS"
      

מחליפים את COMPUTE_CLASS בשם של סוג המכונה בהתאם לתרחיש לדוגמה, למשל Scale-Out. אם בוחרים באפשרות Performance, אפשר גם לבחור סדרת מכונות של Compute Engine בבורר הצמתים. אם לא מציינים סדרת מכונות, GKE משתמש בסדרת מכונות C4 בהתאם לזמינות האזורית. הוראות מפורטות מופיעות במאמר בנושא הפעלת עומסי עבודה שדורשים הרבה משאבי CPU עם ביצועים אופטימליים.

אפשר גם לבקש מחלקות מחשוב ספציפיות עבור Spot Pods.

ציון בקשות למשאבים

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

בחירת ארכיטקטורת CPU

חלק מסוגי המחשוב תומכים בכמה ארכיטקטורות של מעבדים. לדוגמה, המחלקה Scale-Out תומכת בארכיטקטורות Arm ו-x86. אם לא מבקשים ארכיטקטורה ספציפית, Autopilot מקצה צמתים עם ארכיטקטורת ברירת המחדל של מחלקת המחשוב שצוינה. אם צריך להשתמש בארכיטקטורה אחרת עבור ה-Pods, צריך לציין את הארכיטקטורה הזו בבורר הצמתים או בכלל ההעדפה של הצמתים, לצד בקשת סוג המחשוב. הסוג של המכונה הווירטואלית שאתם מבקשים צריך לתמוך בארכיטקטורת המעבד שציינתם.

הוראות מפורטות זמינות במאמר פריסת Autopilot Pods בארכיטקטורת Arm.

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