בדף הזה מוסבר איך להגדיר פריסות של מצב 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 לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- כדאי לעיין בדרישות ובמגבלות של צמתי Arm.
דרישות
- כדי להשתמש ב-
autopilot-armComputeClass, צריך לוודא שהאשכול פועל ב-GKE מגרסה 1.35.3-gke.1389000 ואילך. - כדי להשתמש בתכונות כמו הגדרת ברירת מחדל חכמה (על ידי ציון התווית
kubernetes.io/arch: arm64בלבד), ComputeClassautopilot-arm-spotאו ComputeClassautopilot-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-armkubernetes.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 מבצע את הפעולות הבאות:
- הכלי מקצה אוטומטית צמתים של Arm להפעלת ה-Pods.
- הצביעה של הצמתים החדשים מתבצעת אוטומטית כדי למנוע תזמון של Pods שאינם מסוג Arm בצמתים האלה.
- הוספה אוטומטית של 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.
המאמרים הבאים
- מידע נוסף על ארכיטקטורת אשכולות של Autopilot
- מידע נוסף על מחזור החיים של Pods
- מידע נוסף על סוגי המחשוב הזמינים ב-Autopilot
- מידע על בקשות ברירת המחדל, המינימום והמקסימום למשאבים בכל פלטפורמה