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

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

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

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

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

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

מגבלות

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

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

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

ציון הזמינות של מכונות וירטואליות (VM) מסוג Spot

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

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

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

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

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

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

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

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

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

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

  • דקה אחת (60 שניות): רוב המכונות הווירטואליות מסוג Spot יפעלו למשך דקה אחת לפני ש-Compute Engine יבצע הפסקה שלהן. מומלץ לבצע אחת מהפעולות הבאות:

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

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

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

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

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

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

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

  • פיזור מכונות וירטואליות על פני כמה אזורים: אם מציינים צורה של פיזור יעד של ANY או BALANCED, יכול להיות ש-API‏ advice.capacity ימליץ ליצור מכונות וירטואליות מסוג Spot על פני כמה אזורים. לדוגמה, כדי למקסם את הסיכויים ליצור 100 מכונות וירטואליות מסוג 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 .

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

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

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

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

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

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

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

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

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

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

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

המסוף

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

    כניסה לכלי Capacity advisor

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

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

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

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

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

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

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

    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: רוצים ליצור מכונות וירטואליות במודל Spot באזור אחד או יותר על סמך הזמינות. מציינים את הערך הזה לעומסי עבודה של אצווה.

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

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

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

  • REGION: האזור שבו רוצים לראות את הזמינות של מכונות וירטואליות במודל 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: האזור שבו רוצים לראות את הזמינות של מכונות וירטואליות מסוג Spot. אם רוצים לראות את הזמינות רק באזורים ספציפיים בתוך האזור שצוין, צריך לכלול את שדה המערך distributionPolicy.zones בגוף הבקשה. לדוגמה, כדי לראות את הזמינות של מכונות וירטואליות מסוג Spot בשני אזורים, מוסיפים את המערך zones לשדה distributionPolicy באופן הבא:

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

    מחליפים את ZONE_1 ואת ZONE_2 בשני התחומים שבהם רוצים לראות את הזמינות של מכונות וירטואליות מסוג Spot.

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

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

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

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

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

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

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

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

    • ANY_SINGLE_ZONE: אתם רוצים ליצור מכונות וירטואליות במודל Spot רק באזור אחד על סמך הזמינות. מציינים את הערך הזה לעומסי עבודה שדורשים תקשורת נרחבת בין מכונות וירטואליות, כמו עומסי עבודה של 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"
        }
      ]
    }
  ]
}

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