איך בודקים את הזמינות של מכונות וירטואליות מסוג Spot

במאמר הזה מוסבר איך לצפות בזמינות בזמן אמת ובזמן הפעולה הצפוי של מכונות וירטואליות מסוג Spot.

לפני שיוצרים VM במודל Spot, אפשר להשתמש ב-API‏ advice.capacity כדי לראות את הזמינות בזמן אמת ואת זמן הפעולה התקינה הצפוי במגוון סוגי מכונות ומיקומים. המידע הזה עוזר לכם:

  • הפחתת שגיאות שקשורות לזמינות משאבים. כשאתם רואים אילו סוגי מכונות, אזורים או תחומים (zones) כוללים קיבולת זמינה, אתם יכולים לציין את ההגדרות האלה כשאתם יוצרים VM במודל Spot. הפעולה הזו תפחית את הסיכויים להיתקל בשגיאות שקשורות לזמינות של משאבים.

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

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

מגבלות

כששולחים בקשה ל-advice.capacity API, אי אפשר לראות את הזמינות של יחידות TPU.

הסבר על הצגת זמינות המשאבים של VM במודל Spot

כששולחים בקשה ל-API של advice.capacity, הפלט מציג את מדדי ההמלצות הבאים. המדדים האלה מבוססים על סוג המכונה שבה רוצים להשתמש ב-VM במודל Spot, על האזור שבו רוצים ליצור VM במודל Spot ועל הזמינות בזמן אמת ושיעורי ההפסקה הזמנית ההיסטוריים של המשאבים המבוקשים.

ציון הזמינות של מכונות וירטואליות במודל Spot

כששולחים בקשה ל-advice.capacity API, ציון הזמינות (obtainability) בפלט מציין את הסיכוי שתוכלו ליצור בהצלחה את מספר ה-VMs במודל Spot שציינתם באזור אחד או יותר. הציון הזה מחושב ב-Compute Engine על סמך הזמינות בזמן אמת של המשאבים שביקשתם, ושיעור ההצלחה של בקשות היצירה האחרונות.

הציון נע בין 0.0 ל-1.0, והוא מציין את אחד מסיכויי ההצלחה הבאים:

  • סיכוי גבוה להצלחה (0.7 עד 1.0): סביר מאוד שתצליחו ליצור את ה-VMs במודל Spot שביקשתם.

  • סיכויים בינוניים (0.4 עד 0.6): יש סיכוי בינוני שתוכלו ליצור את ה-VM במודל Spot שביקשתם. אם יוצרים מכונות וירטואליות מסוג Spot בכמות גדולה או בקבוצת MIG עם גודל יעד, יכול להיות שתקבלו רק חלק מהמכונות הווירטואליות שביקשתם.

  • סיכוי נמוך להצלחה (0.0 עד 0.3): סביר להניח שלא תצליחו ליצור את מכונות ה-VM במודל Spot שביקשתם. מומלץ לבדוק את זמינות המשאבים במיקום אחר או בסוג מכונה אחר, או ליצור מכונות וירטואליות באמצעות מודל הקצאת משאבים אחר.

זמן פעולה משוער של מכונות וירטואליות במודל Spot

כששולחים בקשה ל-advice.capacity API, זמן הפעולה המשוער (estimatedUptime) בפלט מציין את הזמן המינימלי שרוב המכונות הווירטואליות מסוג Spot שצוינו צפויות לפעול לפני שהן יידחקו. מערכת Compute Engine מחשבת את זמן הפעולה התקינה הזה על סמך דפוסי שימוש היסטוריים ונוכחיים בסוג המכונה ובמיקום שציינתם.

‫Compute Engine יכול להגדיר את זמן הפעולה המשוער לאחד מהערכים הבאים:

  • ‫60 דקות (3,600 שניות): רוב ה-VM במודל Spot יפעלו למשך שעה לפני ש-Compute Engine יבצע הפסקה שלהן. ליצור מכונות וירטואליות לעומסי עבודה (workloads) ארוכים שיכולים לסבול הפרעות, כמו עומסי עבודה באצווה.

  • ‫10 דקות (600 שניות): רוב ה-VM במודל Spot יפעלו למשך 10 דקות לפני ש-Compute Engine יבצע הפסקה זמנית שלהן. צרו מכונות וירטואליות רק למשימות קצרות או לעומסי עבודה שעמידים בפני תקלות ושומרים את ההתקדמות שלהם במרווחי זמן קצרים.

  • ‫1 דקה (60 שניות): רוב ה-VM-ים במודל Spot יפעלו למשך דקה אחת לפני ש-Compute Engine יבצע הפסקה זמנית שלהם. מומלץ לבצע אחת מהפעולות הבאות:

    • צרו מכונות וירטואליות רק למשימות קצרות מאוד, לבדיקות או לעומסי עבודה לא קריטיים.

    • בודקים את זמינות המשאבים במיקום אחר או בסוג מכונה אחר.

    • ליצור מכונות וירטואליות באמצעות מודל הקצאת משאבים אחר.

שיטות מומלצות

כדי להגדיל את הסיכויים לקבלת קיבולת אחרי השימוש ב-API של advice.capacity, מומלץ לפעול לפי השיטות המומלצות הבאות:

  • השוואה בין פלטים של סוגי מכונות שונים: אם עומס העבודה שלכם גמיש, אתם יכולים להשוות בין אפשרויות עם מספר שונה של VM במודל Spot או סוגי מכונות שונים. לדוגמה, אתם יכולים להשוות בין הפלט של 100 מכונות וירטואליות מסוג n1-standard-2 לבין הפלט של 50 מכונות וירטואליות מסוג n1-standard-4. לאחר מכן תוכלו ליצור מכונות וירטואליות מסוג Spot באמצעות ההגדרה שמאזנת בצורה הטובה ביותר בין הזמינות לבין זמן הפעולה המשוער של עומס העבודה.

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

  • פיזור מכונות וירטואליות (VM) על פני כמה אזורים: אם מציינים צורה של פיזור יעד של ANY או BALANCED, יכול להיות ש-API‏ advice.capacity ימליץ ליצור VM במודל Spot על פני כמה אזורים. לדוגמה, כדי למקסם את הסיכויים ליצור 100 VM במודל Spot, יכול להיות שהפלט ימליץ ליצור 90 מכונות וירטואליות באזור אחד ו-10 מכונות וירטואליות באזור אחר.

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

  • ה-API של advice.capacity כולל אזורי AI כברירת מחדל בהמלצות הזמינות וזמן הפעולה התקינה הצפוי שלו. כדי לוודא שתוכלו ליצור מכונות וירטואליות מסוג Spot באזורי AI אם ה-API ממליץ ליצור מכונות וירטואליות באחד מהאזורים האלה, צריך לוודא שאזורי ה-AI מופעלים בפרויקט שלכם.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לצפייה בזמינות של מכונות VM במודל Spot, בקשו מהאדמין להקצות לכם את התפקיד צפייה ב-Compute ‏ (roles/compute.viewer) ב-IAM בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות כדי לראות את הזמינות של מכונות VM במודל Spot. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי לראות את הזמינות של מכונות וירטואליות במחיר נמוך, צריך את ההרשאות הבאות:

  • כדי לראות את הזמינות של VM במודל Spot: compute.advice.capacity בפרויקט

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

איך בודקים את הזמינות של מכונות וירטואליות מסוג Spot

כדי לראות את הזמינות של מכונות וירטואליות (VM) מסוג Spot, צריך לציין את המיקום, את הגדרת המכונה ואת מספר המכונות הווירטואליות שרוצים ליצור. על סמך התוצאות, אפשר ליצור את ה-VMs במודל Spot, או לראות את זמינות המשאבים במיקום אחר או בהגדרת מכונה אחרת.

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

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

המסוף

  1. נכנסים לדף Capacity advisor במסוף Google Cloud .

    כניסה לכלי Capacity advisor

  2. בחלונית Filters, מבצעים את הפעולות הבאות:

    1. בקטע Location, ברשימה Region בוחרים את האזורים שבהם רוצים לראות את הזמינות של VM במודל Spot.

    2. בקטע Machine specifications, מציינים את הגדרת המכונה ואת מספר המכונות הווירטואליות במודל Spot שרוצים לבדוק את הזמינות שלהן:

      1. ברשימה Machine family בוחרים משפחת מכונות.

      2. ברשימה Series, בוחרים עד שלוש סדרות של מכונות.

      3. ברשימה Machine type, בוחרים עד חמישה סוגי מכונות.

      4. בשדה Number of VMs, מזינים את מספר ה-VMs במודל Spot.

      5. אופציונלי: כברירת מחדל, אזורים עם משאבים מוגבלים זמינים מוסתרים. כדי לראות את האזורים האלה, צריך לבטל את הסימון של התיבה Hide regions with מלאי מוגבל.

    3. לוחצים על חיפוש.

gcloud

כדי לראות את הזמינות של מכונות וירטואליות במודל Spot, משתמשים בפקודה gcloud beta compute advice capacity:

gcloud beta compute advice capacity \
    --provisioning-model=SPOT \
    --instance-selection-machine-types=MACHINE_TYPES \
    --target-distribution-shape=TARGET_DISTRIBUTION_SHAPE \
    --size=SIZE \
    --region=REGION

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

  • ‫MACHINE_TYPES: רשימה מופרדת בפסיקים של סוגי מכונות שרוצים לראות את הזמינות שלהם – לדוגמה, n2-standard-2,n2-standard-4. אפשר לציין עד חמישה סוגי מכונות.

  • ‫TARGET_DISTRIBUTION_SHAPE: חלוקת המשאבים שביקשתם. בהתאם לסוג עומס העבודה שרוצים להריץ ולאזורים שבהם רוצים ליצור מכונות וירטואליות, מציינים אחד מהערכים הבאים:

    • ‫ANY: אתם רוצים ליצור VM במודל Spot באזור אחד או יותר, על סמך הזמינות. מציינים את הערך הזה לעומסי עבודה של אצווה.

    • ‫ANY_SINGLE_ZONE: אתם רוצים ליצור מכונות וירטואליות במודל Spot רק באזור אחד, על סמך הזמינות. מציינים את הערך הזה לעומסי עבודה שדורשים תקשורת נרחבת בין מכונות וירטואליות, כמו עומסי עבודה של AI או מחשוב עתיר ביצועים (HPC).

    • ‫BALANCED: אתם רוצים ליצור מכונות וירטואליות במודל Spot בתחום אחד או יותר על סמך הזמינות, ולגרום ל-Compute Engine להפיץ את המכונות הווירטואליות באופן שווה ככל האפשר בין התחומים. כדאי לציין את הערך הזה כדי למזער את ההשפעה של כשלים אזוריים על עומסי עבודה של אצווה או על עומסי עבודה של שרתים עם זמינות גבוהה.

  • ‫SIZE: מספר מכונות ה-VM במודל Spot שרוצים ליצור.

  • ‫REGION: האזור שבו רוצים לראות את הזמינות של VM במודל Spot. כדי לציין רשימה של אזורים שמופרדים בפסיקים במקום אזור, מחליפים את הדגל --region בדגל --zones.

הפלט אמור להיראות כך:

recommendations:
- scores:
  obtainability: 0.9
  estimatedUptime: 600s
- shards:
  - instanceCount: 90
    machineType: n2-standard-2
    provisioningModel: SPOT
    zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
  - instanceCount: 10
    machineType: n2-standard-4
    provisioningModel: SPOT
    zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c

REST

כדי לראות את הזמינות של מכונות וירטואליות במודל Spot, שולחים בקשת POST ל-method‏ advice.capacity בגרסת בטא.

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

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/capacity

{
  "instanceProperties": {
    "scheduling": {
      "provisioningModel": "SPOT"
    }
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "MACHINE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1"
        ]
      },
      "MACHINE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_2"
        ]
      }
    }
  },
  "distributionPolicy": {
    "targetShape": "TARGET_DISTRIBUTION_SHAPE"
  },
  "size": SIZE
}

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

  • ‫PROJECT_ID: מזהה הפרויקט.

  • ‫REGION: האזור שבו רוצים לראות את הזמינות של VM במודל Spot. אם רוצים לראות את הזמינות רק באזורים ספציפיים בתוך האזור שצוין, צריך לכלול את השדה distributionPolicy.zones מסוג מערך בגוף הבקשה. לדוגמה, כדי לראות את הזמינות של VM במודל Spot בשני אזורים, מוסיפים את המערך zones לשדה distributionPolicy באופן הבא:

    "zones": [
      {
        "zone": "zones/ZONE_1"
      },
      {
        "zone": "zones/ZONE_2"
      }
    ]
    

    מחליפים את ZONE_1 ואת ZONE_2 בשני התחומים שבהם רוצים לראות את הזמינות של VM במודל Spot.

  • ‫MACHINE_SELECTION_1 ו-MACHINE_SELECTION_2: שם לבחירת סוג המכונה. לדוגמה, מציינים selection-1 ו-selection-2 בהתאמה.

  • ‫MACHINE_TYPE_1 ו-MACHINE_TYPE_2: סוגי המכונות שרוצים לראות את הזמינות שלהן. בהתאם לסוג המכונה, חשוב לשים לב לנקודות הבאות:

    • סוגי מכונות N1: כדי לחבר יחידות GPU למכונות וירטואליות מסוג N1 VM במודל Spot, צריך לכלול את השדה guestAccelerators בשדות MACHINE_SELECTION_1 או MACHINE_SELECTION_2 באופן הבא:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "ACCELERATOR_TYPE"
        }
      ]
      

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

    • סוגי מכונות ללא דיסקים מקומיים של SSD כברירת מחדל: כדי לצרף דיסקים מקומיים של SSD ל-VM במודל Spot, צריך לכלול את השדה disks בשדות MACHINE_SELECTION_1 או MACHINE_SELECTION_2. לכל דיסק SSD מקומי שרוצים לצרף, חוזרים על השדה type ומגדירים אותו ל-SCRATCH. לדוגמה, כדי לצרף שני דיסקים מסוג Local SSD, צריך לכלול את הפקודה הבאה:

      "disks": [
        {
          "type": "SCRATCH"
        },
        {
          "type": "SCRATCH"
        }
      ]
      
  • ‫TARGET_DISTRIBUTION_SHAPE: חלוקת המשאבים שביקשתם. בהתאם לסוג עומס העבודה שרוצים להריץ ולאזורים שבהם רוצים ליצור מכונות וירטואליות, מציינים אחד מהערכים הבאים:

    • ‫ANY: אתם רוצים ליצור VM במודל Spot באזור אחד או יותר, על סמך הזמינות. מציינים את הערך הזה לעומסי עבודה של אצווה.

    • ‫ANY_SINGLE_ZONE: אתם רוצים ליצור VM במודל Spot רק בתחום (zone) אחד על סמך הזמינות. צריך לציין את הערך הזה לעומסי עבודה שדורשים תקשורת נרחבת בין מכונות וירטואליות, כמו עומסי עבודה של AI או HPC.

    • ‫BALANCED: אתם רוצים ליצור מכונות וירטואליות במודל Spot בתחום אחד או יותר על סמך הזמינות, ו-Compute Engine יפיץ את המכונות הווירטואליות באופן שווה ככל האפשר בין התחומים. כדאי לציין את הערך הזה כדי למזער את ההשפעה של כשלים אזוריים על עומסי עבודה של הגשה או אצווה בזמינות גבוהה.

  • ‫SIZE: מספר מכונות ה-VM במודל Spot שרוצים ליצור.

הפלט אמור להיראות כך:

{
  "recommendations": [
    {
      "scores": {
        "estimatedUptime": "600s",
        "obtainability": 0.9
      },
      "shards": [
        {
          "instanceCount": 90,
          "machineType": "n2-standard-2",
          "provisioningModel": "SPOT",
          "zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a"
        },
        {
          "instanceCount": 10,
          "machineType": "n2-standard-4",
          "provisioningModel": "SPOT",
          "zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c"
        }
      ]
    }
  ]
}

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