פריסת עומסי עבודה של Autopilot בארכיטקטורת Arm

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

מידע על ארכיטקטורת Arm בטייס אוטומטי

ב-Autopilot clusters יש compute classes לעומסי עבודה עם דרישות חומרה ספציפיות. חלק מסוגי המכונות האלה תומכים בכמה ארכיטקטורות של מעבדים, כמו amd64 ו-arm64.

תרחישי שימוש בצמתי Arm

צמתים עם ארכיטקטורת Arm מציעים ביצועים חסכוניים יותר בהשוואה לצמתים דומים של x86. כדאי לבחור ב-Arm עבור עומסי העבודה של Autopilot במצבים כמו:

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

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

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

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

דרישות

  • כדי להשתמש ב-autopilot-arm ComputeClass, צריך לוודא שהאשכול פועל ב-GKE מגרסה 1.35.3-gke.1389000 ואילך.
  • כדי להשתמש בתכונות כמו הגדרת ברירת מחדל חכמה (על ידי ציון התווית kubernetes.io/arch: arm64 בלבד), ComputeClass‏ autopilot-arm-spot או ComputeClass‏ autopilot-arm באשכולות GKE Standard שמשתמשים ב-ComputeClasses של Autopilot, האשכול צריך להריץ גרסה 1.36.0-gke.3302001 ואילך.
  • מוודאים שיש לכם מכסה לסוגי המכונות C4A,‏ N4A או Tau T2A של Compute Engine.
  • מוודאים שיש לכם Pod עם קובץ אימג' של קונטיינר שנבנה לארכיטקטורת Arm.

איך מבקשים צמתי Arm ב-Autopilot

כדי להורות ל-Autopilot להריץ את ה-Pods בצמתי Arm, צריך לציין אחד מהסלקטורים הבאים (בהתאם לסוג ולגרסה של GKE) באמצעות nodeSelector או כלל node affinity:

  • ב-Autopilot clusters (הגדרות ברירת מחדל חכמות): מציינים רק את סוג הארכיטקטורה:

    • kubernetes.io/arch: arm64

    אם עומס העבודה שלכם פועל באשכול Autopilot, הפלטפורמה שנבחרת היא Arm למטרות כלליות.

  • באשכולות במצב Autopilot או באשכולות במצב Standard שמשתמשים ב-ComputeClasses במצב Autopilot (רק ComputeClass): מציינים את ה-ComputeClass:

    • cloud.google.com/compute-class: autopilot-arm (או autopilot-arm-spot)

    בחירה במחלקה הזו מתזמנת את עומס העבודה בפלטפורמת Arm שעברה אופטימיזציה לשימוש במכולות (או בווריאציה של מכונות וירטואליות מסוג Spot שלה), ומוסיפה אוטומטית את הסלקטור kubernetes.io/arch: arm64 הנדרש ל-Pod במהלך ההרשאה.

  • בחירה מפורשת (גרסאות ישנות יותר של GKE): באשכולות Autopilot שמופעלת בהם גרסה ‎1.35.3-gke.1389000 ואילך, אבל גרסה מוקדמת יותר מ-‎1.36.0-gke.3302001, צריך לציין את שני הסלקטורים הבאים כדי לבחור את פלטפורמת Arm לשימוש כללי. השילוב הזה נתמך גם בגרסאות חדשות יותר של GKE לצורך תאימות לאחור:

    • cloud.google.com/compute-class: autopilot-arm
    • kubernetes.io/arch: arm64
  • לעומסי עבודה עם דרישות חומרה ספציפיות: מציינים אחת מהאפשרויות הבאות:

    • kubernetes.io/arch: arm64 באשכול Standard. ב-GKE, ברירת המחדל היא הצבת ה-Pods בסוגי מכונות C4A.
    • cloud.google.com/machine-family: ARM_MACHINE_SERIES. מחליפים את ARM_MACHINE_SERIES בסדרת מכונות Arm כמו C4A, ‏N4A או T2A. ‫GKE ממקם את ה-Pods בסדרה שצוינה.

כברירת מחדל, שימוש בכל אחת מהתוויות מלבד Performance מאפשר ל-GKE למקם פודים אחרים באותו הצומת אם יש קיבולת זמינה בצומת הזה. כדי לבקש צומת ייעודי לכל Pod, מוסיפים את התווית cloud.google.com/compute-class: Performance למניפסט לצד תוויות הארכיטקטורה או משפחת המכונות. פרטים נוספים זמינים במאמר בנושא אופטימיזציה של הביצועים של Autopilot Pod על ידי בחירת סדרת מכונות.

אפשר גם להשתמש בתווית Scale-Out עם התווית arm64 כדי לבקש T2A. אפשר גם לבקש ארכיטקטורת Arm עבור Spot Pods.

כשפורסים את עומס העבודה, Autopilot מבצע את הפעולות הבאות:

  1. הכלי מקצה אוטומטית צמתים של Arm להפעלת ה-Pods.
  2. הצביעה של הצמתים החדשים מתבצעת אוטומטית כדי למנוע תזמון של Pods שאינם מסוג Arm בצמתים האלה.
  3. הוספה אוטומטית של toleration ל-Arm Pods כדי לאפשר תזמון בצמתים החדשים.

דוגמה לבקשה לארכיטקטורת Arm

בדוגמאות הבאות אפשר לראות איך משתמשים בבורר צמתים או בכלל זיקה לצמתים כדי לבקש ארכיטקטורת Arm ב-Autopilot.

nodeSelector

במניפסט הבא מוצגת בקשה לצומת Arm שמותאם לקונטיינרים ב-Autopilot באמצעות הגדרת ברירת מחדל חכמה:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      nodeSelector:
        kubernetes.io/arch: arm64
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

אפשרות אחרת היא לבקש את פלטפורמת Arm שעברה אופטימיזציה לקונטיינרים על ידי ציון מפורש של autopilot-arm (או autopilot-arm-spot למכונות וירטואליות מסוג Spot) ComputeClass:

...
    spec:
      nodeSelector:
        cloud.google.com/compute-class: autopilot-arm
...

כדי לבקש חומרה ספציפית במקום צמתים מותאמים ל-Autopilot, מחליפים את ComputeClasses או מוסיפים cloud.google.com/machine-family: C4A לסלקטור.

nodeAffinity

אפשר להשתמש בהעדפת צומת כדי לבקש צמתים של Arm.

במניפסט הבא מוצגת בקשה לצומת Arm שמותאם לקונטיינרים ב-Autopilot באמצעות הגדרת ברירת מחדל חכמה:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      terminationGracePeriodSeconds: 25
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi
            ephemeral-storage: 1Gi
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

כדי לבקש חומרה ספציפית במקום צמתים מותאמים לקונטיינרים של Autopilot, מחליפים את kubernetes.io/arch בכללים ספציפיים של שיוך למשפחת מכונות או במחלקות בקשות כמו Performance או Scale-Out.

המלצות

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

זמינות

אפשר לפרוס עומסי עבודה של Autopilot בארכיטקטורת Arm באזורים הבאים: us-east1, us-west1, europe-west1, europe-west2, europe-west4, asia-southeast1 ו-us-central1.

פתרון בעיות

מידע על פתרון בעיות ושגיאות נפוצות זמין במאמר פתרון בעיות בעומסי עבודה של Arm.

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