אופטימיזציה של הביצועים של Autopilot Pod באמצעות בחירה של סדרת מכונות

במסמך הזה מוסבר איך להציב עומסי עבודה בסדרת מכונות ספציפית של Compute Engine, כדי לשפר את הביצועים של עומסי העבודה באשכולות של Google Kubernetes Engine (GKE) Autopilot.

חשוב לוודא שאתם מכירים את הנושאים הבאים:

איך פועלת בחירת סדרת המכונות

אתם יכולים להוסיף בורר צמתים של cloud.google.com/machine-family למפרט ה-Pod כדי ש-Autopilot יקצה חומרה ספציפית של Compute Engine לאותו Pod. לדוגמה, אתם יכולים לבחור את סדרת המכונות C3 לפודים שצריכים יותר כוח מעבד, או את סדרת המכונות N1 לפודים שצריכים יותר זיכרון. כדי להריץ את עומס העבודה בצורה אופטימלית, Autopilot מקצה את אחת מהמכונות עם קונפיגורציה מוגדרת (predefined) מסדרת המכונות שבחרתם.

בנוסף לביצועים אופטימליים של Pod, בחירה בסדרת מכונות ספציפית מציעה את היתרונות הבאים:

  • ניצול יעיל של צמתים: כברירת מחדל, Autopilot מבצע אופטימיזציה של השימוש במשאבי הצמתים על ידי תזמון של כמה שיותר Pods שמבקשים את אותה סדרת מכונות בכל צומת. הגישה הזו מאפשרת אופטימיזציה של השימוש במשאבים בצומת, וכך משפרת את היחס בין המחיר לביצועים. אם עומס העבודה שלכם צריך גישה לכל המשאבים בצומת, אתם יכולים להגדיר את עומס העבודה כך שיבקש Pod אחד לכל צומת.

  • עומסי עבודה עם פרצי שימוש: אתם יכולים להגדיר Pods לפרצי שימוש בקיבולת המשאבים שלא בשימוש בצומת, על ידי הגדרת מגבלות משאבים גבוהות יותר מהבקשות שלכם. פרטים נוספים זמינים במאמר הגדרת התפרצות Pod ב-GKE.

תכנון צומת ייעודי לכל Pod

אם יש לכם עומסי עבודה שדורשים הרבה משאבי מעבד (CPU) וצריכים גישה אמינה לכל המשאבים של הצומת, אתם יכולים להגדיר את ה-Pod כך ש-Autopilot ימקם Pod שמבקש סדרת מכונות בצומת משלו.

מומלץ להשתמש בצמתים ייעודיים לכל Pod כשמריצים עומסי עבודה גדולים שדורשים הרבה משאבי מעבד (CPU), כמו עומסי עבודה של אימון AI/ML או עומסי עבודה של מחשוב עתיר ביצועים (HPC) באצווה.

בחירה בין תזמון של כמה פודים לבין תזמון של פוד אחד

כדי לבחור התנהגות תזמון של Pod בהתאם לדרישות שלכם, אתם יכולים להיעזר בהנחיות הבאות:

תמחור

החיוב מתבצע על המכונה הווירטואלית הבסיסית ועל כל חומרה שמצורפת אליה על ידי Compute Engine, בתוספת תשלום על ניהול הצמתים של Autopilot ועל יכולת ההתאמה לעומס. פרטים נוספים זמינים במאמר התמחור של GKE.

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

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

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

בחירת סדרת מכונות

בקטע הזה מוסבר איך לבחור סדרת מכונות ספציפית של Compute Engine ב-Pod.

  1. שומרים את המניפסט הבא בתור machine-series-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 5
            memory: "25Gi"
          limits:
            cpu: 20
            memory: 100Gi
    

    מחליפים את MACHINE_SERIES בסדרת המכונות של Compute Engine לפוד, למשל c3. לערכים נתמכים, ראו סדרות מכונות נתמכות בדף הזה.

  2. פורסים את ה-Pod:

    kubectl apply -f machine-series-pod.yaml
    

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

שימוש ב-SSD מקומיים

אם אתם מציינים סדרת מכונות שמציעה כונני SSD מקומיים, פודים שבוחרים סדרת מכונות יכולים להשתמש בכונני SSD מקומיים לאחסון זמני. במצב Autopilot, המערכת מתייחסת לבקשות לאחסון זמני כשהיא בוחרת את סוג המכונה של Compute Engine לפוד.

מידע נוסף זמין במאמר שימוש באחסון זמני שמגובה ב-SSD מקומי באשכולות Autopilot.

בקשת צומת ייעודי ל-Pod

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

  1. שומרים את המניפסט הבא בתור dedicated-node-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dedicated-node-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/compute-class: Performance
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

    מחליפים את MACHINE_SERIES בסדרת מכונות נתמכת שתומכת גם בתזמון של Pod אחד לכל צומת. אם סדרת המכונות שצוינה לא תומכת בתזמון של Pod אחד לכל צומת, הפריסה תיכשל ותופיע הודעת שגיאה.

  2. פורסים את ה-Pod:

    kubectl apply -f dedicated-node-pod.yaml
    

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

  • מוודאים שה-Pod שנפרס מבקש לפחות את המשאבים המינימליים לצומת שעבר אופטימיזציה לביצועים.
  • חישוב סך כל הבקשות למשאבים של ה-Pod שנפרס ושל כל DaemonSets באשכול.
  • מקצה צומת שמגובה על ידי סדרת המכונות שנבחרה.
  • משנה את המניפסט של Pod באמצעות שילוב של בוררי צמתים וסבילות, כדי להבטיח שה-Pod יפעל בצומת משלו.

סדרות מכונות נתמכות

הבורר machine-family תומך בסדרות המכונות הבאות:

אם לא תציינו סדרת מכונות כשתבחרו את סוג הביצועים, GKE ישתמש בסדרת המכונות C4 אם סוגי המכונות C4 זמינים באזור.

כדי להשוות בין סדרות המכונות האלה ותרחישי השימוש שלהן, קראו את המאמר השוואה בין סדרות של מכונות במסמכי התיעוד של Compute Engine.

מגבלות

  • ה-Performance ComputeClass המוגדר מראש לא תומך בסוגי מכונות Bare Metal, כמו c3-standard-192-metal,‏ c4a-standard-72-metal ו-c4d-standard-384-metal. כדי להשתמש בסוגי המכונות האלה עם Autopilot או עם יצירה אוטומטית של מאגרי צמתים, צריך לציין את סוג המכונה המדויק ב-ComputeClass בהתאמה אישית.

דרישות לגבי הגרסה

ראו את דרישות הגרסה הבאות עבור סדרות מכונות ספציפיות:

  • C4N:
    • בלי Local SSD: גרסת GKE‏ 1.36.0-gke.3009002 ואילך
    • עם Local SSD: גרסה 1.37.2-gke.1434000 של GKE ואילך
  • C4D: GKE גרסה 1.32.9-gke.1711000 ואילך
  • N4D:
    • ‫GKE בגרסה 1.33.13-gke.1079000 ואילך
    • ‫GKE בגרסה 1.34.1-gke.2037000 ואילך
  • סוגי שרתים פיזיים C3 ו-C4A: גרסת GKE‏ 1.35.3-gke.1389000 ואילך (באמצעות ComputeClass בהתאמה אישית).
  • ‫C4D bare metal types: גרסת GKE ‏1.37.0-gke.4713000 ואילך (באמצעות ComputeClass בהתאמה אישית).
  • Z4D: GKE גרסה 1.36.3-gke.1244000 ואילך.

תאימות לתכונות אחרות של GKE

פודים שבוחרים סדרת מכונות יכולים להשתמש ביכולות ובתכונות של GKE שנתמכות על ידי אותה סדרת מכונות, כמו:

פודים מסוג Spot ופודים עם זמן ריצה מורחב הם בלעדיים זה לזה. ‫GKE לא אוכף בקשות למשאבים מינימליים גבוהים יותר לפודים ייעודיים לכל צומת, למרות שהם משתמשים בהפרדת עומסי עבודה.

איך GKE בוחר סוג מכונה

כדי לבחור סוג מכונה בסדרת המכונות שצוינה, GKE מחשב את סך כל הבקשות ל-CPU, לזיכרון ולאחסון זמני של הפודים ושל כל DaemonSet שיפעלו בצומת החדש. ‫GKE מעגל את הערכים האלה כלפי מעלה לסוג המכונה הקרוב ביותר של Compute Engine שתומך בכל הסכומים האלה.

  • דוגמה 1: נניח שיש פריסה עם ארבע רפליקות שבוחרת את סדרת המכונות C3D. אתם לא מבקשים צמתים ייעודיים לכל Pod. בקשות המשאבים של כל רפליקה הן:

    • ‫500m vCPU‏ (0.5 vCPU)
    • זיכרון בנפח ‎1 GiB

    מצב Autopilot ממקם את כל ארבעת ה-Pods בצומת שמגובה על ידי סוג המכונה c3d-standard-4, שיש לה 4 יחידות vCPU וזיכרון בנפח 16GB.

  • דוגמה 2: נניח שיש Pod שבוחר בסדרת המכונות C3D ובכונני Local SSD לאחסון זמני. אתם מבקשים צומת ייעודי ל-Pod. אלה בקשות המשאבים הכוללות, כולל DaemonSets:

    • ‫12 vCPU
    • זיכרון בנפח ‎50 GiB
    • אחסון זמני בנפח 200GiB

    מצב Autopilot ממקם את ה-Pod בצומת שמשתמש בסוג המכונה c3d-standard-16-lssd, שיש לה 16 vCPUs, זיכרון של 64 GiB וקיבולת של 365 GiB ב-SSD מקומי.

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