במאמר הזה נסביר איך לבחור מחלקות מחשוב ספציפיות כדי להריץ עומסי עבודה עם דרישות חומרה ייחודיות באשכולות Autopilot של Google Kubernetes Engine (GKE). לפני שקוראים את המסמך הזה, חשוב להכיר את המושג סוגי מחשוב ב-GKE Autopilot.
סקירה כללית על מחלקות מחשוב ב-Autopilot
ב-Autopilot יש סוגי מחשוב שנועדו להריץ עומסי עבודה עם דרישות חומרה ספציפיות. הסוגים האלה של משאבי מחשוב שימושיים לעומסי עבודה כמו משימות של למידת מכונה ומשימות AI, או להפעלת מסדי נתונים עם תעבורת נתונים גבוהה בזמן אמת.
הסיווגים האלה של מחשוב הם קבוצת משנה של סדרות המכונות ב-Compute Engine, והם מציעים גמישות מעבר לסיווג ברירת המחדל של מחשוב למטרות כלליות ב-Autopilot.
לדוגמה, המחלקה Scale-Out משביתה את הריבוי נימים הסימולטני, כך שכל vCPU הוא ליבה פיזית אחת.
בהתאם לצרכים של ה-Pod שלכם, אתם יכולים להגדיר את ה-Pods הרגילים של Autopilot או את ה-Pods של Spot כדי לבקש צמתים שמגובים על ידי מחלקות המחשוב האלה. אפשר גם לבקש ארכיטקטורת CPU ספציפית, כמו Arm, בכיתות מחשוב שתומכות בארכיטקטורה הזו.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שיש לכם אשכול GKE Autopilot שפועלת בו גרסת GKE 1.24.1-gke.1400 ואילך.
בקשת מחלקת מחשוב ב-Autopilot Pod
כדי להגדיר ל-Autopilot למקם את ה-Pods שלכם בסוג ספציפי של מחשוב, צריך לציין את התוויתcloud.google.com/compute-class ב-nodeSelector או ב-node affinity rule, כמו בדוגמאות הבאות:
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 לא פורס את הפודים ומציג הודעת שגיאה.
בחירת ארכיטקטורת מעבד (CPU)
חלק מסוגי המכונות תומכים בכמה ארכיטקטורות של מעבדים (CPU). לדוגמה, הסוג Scale-Out תומך גם בארכיטקטורת Arm וגם בארכיטקטורת x86. אם לא מבקשים ארכיטקטורה ספציפית, Autopilot מקצה צמתים עם ארכיטקטורת ברירת המחדל של מחלקת המחשוב שצוינה. אם אתם צריכים להשתמש בארכיטקטורה אחרת עבור ה-Pods, אתם יכולים לציין את הארכיטקטורה הזו בבורר הצמתים או בכלל הדמיון בין הצמתים, לצד בקשת סוג המחשוב. סוג המכונה שאתם מבקשים צריך לתמוך בארכיטקטורת המעבד (CPU) שאתם מציינים.
הוראות מפורטות מופיעות במאמר פריסת Autopilot Pods בארכיטקטורת Arm.
המאמרים הבאים
- מידע על שיטות מומלצות לשימוש ב-ComputeClasses
- מידע נוסף על ארכיטקטורת אשכולות של Autopilot
- מידע נוסף על מחזור החיים של Pods
- מידע נוסף על סוגי המחשוב הזמינים ב-Autopilot
- מידע על בקשות ברירת המחדל, המינימום והמקסימום למשאבים בכל פלטפורמה