בדף הזה מוסבר איך להגדיר פריסות של 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.
- מוודאים שיש לכם מכסה לסוגי המכונות C4A, N4A או Tau T2A של Compute Engine.
- מוודאים שיש לכם Pod עם קובץ אימג' של קונטיינר שנבנה לארכיטקטורת Arm.
איך מבקשים צמתי Arm ב-Autopilot
כדי להגדיר ל-Autopilot להריץ את ה-Pods שלכם בצמתי Arm, צריך לציין אחת מהתוויות הבאות ב-nodeSelector או בכלל node affinity:
-
kubernetes.io/arch: arm64. GKE ממקם Pods בC4Aסוגי מכונות כברירת מחדל באשכולות שמופעלת בהם גרסה 1.31.3-gke.1056000 ואילך. אם האשכול מריץ גרסה קודמת, GKE ממקם את ה-Pods בסוגי מכונותT2A. -
cloud.google.com/machine-family: ARM_MACHINE_SERIES. מחליפים אתARM_MACHINE_SERIESבסדרת מכונות Arm כמוC4A,N4AאוT2A. GKE ממקם את ה-Pods בסדרה שצוינה.
כברירת מחדל, שימוש באחת מהתוויות מאפשר ל-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 ב-nodeSelector:
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:
cloud.google.com/compute-class: Performance
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
nodeAffinity
אפשר להשתמש בהעדפת צומת כדי לבקש צמתי Arm. אפשר גם לציין את סוג ההתאמה של הצומת לשימוש:
-
requiredDuringSchedulingIgnoredDuringExecution: חובה להשתמש בסוג המחשוב ובארכיטקטורה שצוינו. -
preferredDuringSchedulingIgnoredDuringExecution: שימוש במחלקה ובארכיטקטורה שצוינו למחשוב על בסיס המאמץ המרבי. לדוגמה, אם צומת x86 קיים ניתן להקצאה, GKE ממקם את ה-Pod בצומת x86 במקום להקצות צומת Arm חדש. אלא אם אתם משתמשים במניפסט של תמונה מרובת ארכיטקטורות, ה-Pod שלכם יקרוס. מומלץ מאוד לבקש במפורש את הארכיטקטורה הספציפית שרוצים.
במניפסט לדוגמה הבא נדרשת המחלקה Performance וצמתי Arm:
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: cloud.google.com/compute-class
operator: In
values:
- Performance
- key: kubernetes.io/arch
operator: In
values:
- arm64
המלצות
- פיתוח ושימוש בתמונות מרובות ארכיטקטורות כחלק מצינור עיבוד הנתונים. תמונות מרובות ארכיטקטורות מבטיחות שה-Pods יפעלו גם אם הם ממוקמים בצמתי x86.
- מבקשים במפורש ארכיטקטורה וסוגי מחשוב במניפסטים של עומסי העבודה. אם לא תבחרו, Autopilot ישתמש בארכיטקטורת ברירת המחדל של סוג המחשוב שנבחר, שיכול להיות שלא מבוסס על Arm.
זמינות
אפשר לפרוס עומסי עבודה של Autopilot בארכיטקטורת Arm במיקומים שלGoogle Cloud שתומכים בארכיטקטורת Arm. פרטים נוספים זמינים במאמר אזורים ותחומים זמינים.
פתרון בעיות
מידע על פתרון בעיות ושגיאות נפוצות מופיע במאמר פתרון בעיות של עומסי עבודה ב-Arm.
המאמרים הבאים
- מידע נוסף על ארכיטקטורת אשכולות של Autopilot
- מידע נוסף על מחזור החיים של Pods
- מידע נוסף על סוגי המחשוב הזמינים ב-Autopilot
- מידע על בקשות ברירת המחדל, המינימום והמקסימום למשאבים בכל פלטפורמה