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

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

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

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

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

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

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

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

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

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

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

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

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

תמחור

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

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

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

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-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 עבור ה-Pod, כמו c3. בקטע סדרות מכונות נתמכות שבדף הזה מפורטים הערכים הנתמכים.

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

    kubectl apply -f machine-series-pod.yaml
    

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

שימוש בכונני SSD מקומיים

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

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

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

אם ל-Pod שלכם יש דרישות ביצועים ספציפיות, כמו גישה מהימנה לכל המשאבים של הצומת, אתם יכולים לבקש צומת ייעודי לכל Pod. כדי לעשות זאת, צריך לציין את cloud.google.com/compute-class: Performance node selector יחד עם node selector של סדרת המכונות. ההגדרה הזו מציינת ל-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 שנפרס ושל כל DaemonSet באשכול.
  • הפונקציה מקצה צומת שמגובה על ידי סדרת המכונות שנבחרה.
  • משנה את מניפסט ה-Pod באמצעות שילוב של סלקטורים של צמתים וסבילות, כדי לוודא שה-Pod יפעל בצומת משלו.

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

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

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

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

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

סדרת מכונות C4D זמינה ב-GKE מגרסה 1.32.9-gke.1711000 ואילך.

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

‫Pods שבוחרים סדרת מכונות יכולים להשתמש ביכולות ובתכונות של GKE שנתמכות על ידי סדרת המכונות הזו, כמו:

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

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

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

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

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

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

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

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

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

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