בדף הזה מוסבר איך להגדיר פריסות של Google Kubernetes Engine (GKE) במצב Autopilot כדי לבקש צמתים שמגובים על ידי ארכיטקטורת Arm.
מידע על ארכיטקטורת Arm בטייס אוטומטי
ב-Autopilot clusters מוצעים compute classes לעומסי עבודה עם דרישות חומרה ספציפיות. חלק מהסוגים האלה של מחשוב תומכים בכמה ארכיטקטורות של מעבדים, כמו amd64 ו-arm64.
תרחישים לדוגמה לשימוש בצמתי Arm
צמתים עם ארכיטקטורת Arm מציעים ביצועים חסכוניים יותר בהשוואה לצמתים דומים של x86. כדאי לבחור בארכיטקטורת Arm עבור עומסי העבודה של Autopilot במצבים הבאים:
- הסביבה שלכם מסתמכת על ארכיטקטורת Arm לצורך בנייה ובדיקה.
- אתם מפתחים אפליקציות למכשירי Android שפועלות על מעבדי Arm.
- אתם משתמשים בתמונות מרובות ארכיטקטורות ורוצים לבצע אופטימיזציה של העלויות בזמן הפעלת עומסי העבודה.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-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 (smart defaulting): מציינים רק את סוג הארכיטקטורה:
kubernetes.io/arch: arm64
אם עומס העבודה שלכם פועל באשכול Autopilot, האפשרות הזו בוחרת בפלטפורמת Arm לשימוש כללי.
באשכולות במצב Autopilot או באשכולות רגילים שמשתמשים ב-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 בצמתים האלה.
- הוספה אוטומטית של טולרנטיות ל-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
- מידע על בקשות ברירת המחדל, המינימום והמקסימום למשאבים בכל פלטפורמה