יצירת קבוצת MIG שמשתמשת במכונות וירטואליות מסוג Spot

במאמר הזה מוסבר איך ליצור קבוצת מופעי מכונה מנוהלים (MIG) שמשתמשת ב-VM במודל Spot.

מכונות וירטואליות (VM) מסוג Spot הן מכונות וירטואליות שאפשר לקבל במחיר מוזל במיוחד. עם זאת, Compute Engine יכול להפסיק או למחוק מכונות וירטואליות מסוג Spot בכל שלב כדי לפנות קיבולת. אפשר להשתמש במכונות וירטואליות מסוג Spot כדי להריץ עומסי עבודה (workloads) עמידים בכשלים, כמו משימות עיבוד באצווה או אפליקציות חסרות מצב (stateless), בעלות נמוכה.

לשיטות אחרות ליצירת קבוצות MIG, ראו תרחישים בסיסיים ליצירת קבוצת MIG.

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

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

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

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

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

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

    המסוף

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

    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 .

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

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

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

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

כדי ליצור קבוצות של מכונות מנוהלות (MIG) שמשתמשות במכונות וירטואליות מסוג Spot, נדרשות ההרשאות הבאות:

  • כדי ליצור תבנית של הגדרות מכונה: compute.instanceTemplates.create בפרויקט
  • כדי ליצור קבוצת MIG: compute.instanceGroupManagers.create בפרויקט

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

יצירת קבוצת MIG שמשתמשת במכונות וירטואליות מסוג Spot

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

  1. יצירת תבנית של הגדרות מכונה שמוגדרת ליצירת VM במודל Spot

  2. יצירת MIG אזורי או אזורי

יצירת תבנית של הגדרות מכונה שמוגדרת ליצירת VM במודל Spot

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

המסוף

  1. נכנסים לדף Instance templates במסוף Google Cloud .

    כניסה לדף Instance templates

  2. לוחצים על Create instance template. מופיע הדף Create an instance template.

  3. בשדה Name, מזינים שם לתבנית של הגדרות מכונה.

  4. בקטע Location, בוחרים את סוג תבנית של הגדרות מכונה שרוצים ליצור:

    • כדי ליצור תבנית של הגדרות מכונה אזורית, בוחרים באפשרות Regional (אזורית) ואז בוחרים את האזור שבו רוצים ליצור את התבנית. בהתאם לסוג המכונה שבו אתם רוצים שמכונות Spot וירטואליות ישתמשו, מציינים אזור נתמך.

    • כדי ליצור תבנית של הגדרות מכונה גלובלית, בוחרים באפשרות Global.

  5. בקטע Machine configuration, בוחרים סדרת מכונות נתמכת עבור מכונות Spot.

  6. בקטע Provisioning model:

    1. ברשימה VM provisioning model בוחרים באפשרות Spot. הקטע VM provisioning model advanced settings (הגדרות מתקדמות של מודל הקצאת משאבים למכונה וירטואלית) יורחב.

    2. ברשימה Preemption notice duration, בוחרים אפשרות בהתאם לאופן שבו רוצים לטפל בהפסקת הפעולה.

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

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

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

      • כדי לעצור מכונות וירטואליות מסוג Spot, לוחצים על עצירה.

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

  7. כדי להוסיף סקריפט כיבוי, מבצעים את השלבים הבאים. אם בחרתם באפשרות 0 שניות (ברירת מחדל) בשדה משך הודעת הקדימה, צריך לבצע את השלב הזה כדי לטפל בקדימה. אחרת, אם בחרתם באפשרות 120 שניות, השלב הזה הוא אופציונלי.

    1. מרחיבים את הקטע אפשרויות מתקדמות.
    2. מרחיבים את הקטע ניהול.
    3. בקטע Metadata (מטא נתונים), לוחצים על Add item (הוספת פריט).
    4. בשדה מפתח, מזינים shutdown-script כמפתח המטא-נתונים.
    5. בשדה ערך, מוסיפים את התוכן של סקריפט כיבוי שמטפל בהפסקת הפעולה.
  8. אופציונלי: כדי לשנות את ברירת המחדל של סוג דיסק האתחול או התמונה, בקטע Boot disk לוחצים על Change. אחר כך פועלים לפי ההנחיות כדי לשנות את דיסק האתחול.

  9. לוחצים על יצירה.

gcloud

כדי ליצור תבנית של הגדרות מכונה שמוגדרת ליצירת VM במודל Spot, משתמשים בפקודה gcloud compute instance-templates create.

הפקודה הבאה יוצרת תבנית של הגדרות מכונה אזורית. כדי ליצור תבנית גלובלית של הגדרות מכונה, משתמשים באותה פקודה בלי הדגל --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --instance-termination-action=TERMINATION_ACTION \
    --machine-type=MACHINE_TYPE \
    --provisioning-model=SPOT \
    --preemption-notice-duration=PREEMPTION_NOTICE_DURATION \
    --metadata shutdown-script=SHUTDOWN_SCRIPT

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

  • ‫INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה שרוצים ליצור.

  • ‫IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה. לדוגמה, debian-cloud. מידע נוסף על פרויקטים של תמונות נתמכות זמין במאמר בנושא תמונות ציבוריות.

  • ‫IMAGE_FAMILY: משפחת תמונות. התמונה הזו מציינת את תמונת מערכת ההפעלה העדכנית ביותר שלא הוצאה משימוש. לדוגמה, אם מציינים את הערך debian-12, נעשה שימוש בגרסה העדכנית ביותר במשפחת תמונות Debian 12. מידע נוסף על שימוש במשפחות תמונות זמין במאמר בנושא שיטות מומלצות לשימוש במשפחות תמונות.

  • ‫REGION: האזור שבו רוצים ליצור את תבנית המכונה. לפי סוג המכונה שבה רוצים להשתמש במכונות Spot, מציינים אזור נתמך.

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

  • ‫MACHINE_TYPE: סוג מכונה נתמך למכונות וירטואליות מסוג Spot. אם מציינים סוג מכונה N1, צריך לכלול את הדגל --accelerator כדי להגדיר את המספר והסוג של מעבדי ה-GPU שרוצים לצרף למכונות הווירטואליות.

  • ‫PREEMPTION_NOTICE_DURATION: האם להפעיל משך זמן להודעה על קדימות. ב-CLI של gcloud, הערך צריך להיות 120s או 0s.

    • אם מציינים 120s (מומלץ), צריך לטפל בהפסקת הפעולה בעומס העבודה. (אופציונלי, אפשר גם לציין סקריפט כיבוי).

    • אם מציינים 0s (ברירת מחדל), צריך לטפל בהקדמה בסקריפט של כיבוי.

  • ‫SHUTDOWN_SCRIPT: סקריפט כיבוי.

    • אם מגדירים את PREEMPTION_NOTICE_DURATION לערך 0s (ברירת מחדל), צריך לציין סקריפט כיבוי כדי לטפל בהקצאה מראש. מידע נוסף על הפורמט של סקריפט כיבוי ועל הגדרתו זמין במאמר הרצת סקריפטים של כיבוי.

    • אחרת, אם לא רוצים לציין סקריפט כיבוי, אפשר להסיר את הדגל --metadata shutdown-script.

REST

כדי ליצור תבנית של הגדרות מכונה שמוגדרת ליצירת VM במודל Spot, שולחים אחת מהבקשות הבאות מסוג POST:

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "instanceTerminationAction": "TERMINATION_ACTION",
      "provisioningModel": "SPOT",
      "preemptionNoticeDuration": { "seconds": PREEMPTION_NOTICE_DURATION }
    },
    "metadata": {
      "items": [
        {
          "key": "shutdown-script",
          "value": "SHUTDOWN_SCRIPT"
        }
      ]
    }
  }
}

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

  • ‫PROJECT_ID: המזהה של הפרויקט שבו רוצים ליצור את תבנית של הגדרות מכונה.

  • ‫REGION: האזור שבו רוצים ליצור את תבנית המכונה. לפי סוג המכונה שבה רוצים להשתמש במכונות Spot, מציינים אזור נתמך.

  • ‫INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה.

  • ‫IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה. לדוגמה, debian-cloud. מידע נוסף על פרויקטים של תמונות נתמכות זמין במאמר בנושא תמונות ציבוריות.

  • ‫IMAGE: מציינים אחת מהאפשרויות הבאות:

    • גרסה ספציפית של תמונת מערכת ההפעלה – לדוגמה, debian-12-bookworm-v20240617.

    • משפחת תמונות, שצריכה להיות בפורמט family/IMAGE_FAMILY. הערך הזה מציין את תמונת מערכת ההפעלה העדכנית ביותר שלא הוצאה משימוש. לדוגמה, אם מציינים family/debian-12, נעשה שימוש בגרסה האחרונה במשפחת תמונות Debian 12. מידע נוסף על שימוש במשפחות של תמונות זמין במאמר בנושא שיטות מומלצות לשימוש במשפחות של תמונות.

  • ‫MACHINE_TYPE: סוג מכונה נתמך למכונות וירטואליות מסוג Spot. אם מציינים סוג מכונה N1, צריך לכלול את השדה guestAccelerators כדי להגדיר את מספר מעבדי ה-GPU ואת הסוג שלהם לצירוף למכונות הווירטואליות.

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

  • ‫PREEMPTION_NOTICE_DURATION: האם להפעיל משך זמן להודעה על קדימות. ב-REST, הערך צריך להיות 120 או 0.

    • אם מציינים 120 (מומלץ), צריך לטפל בהפסקת הפעולה בעומס העבודה. (אופציונלי, אפשר גם לציין סקריפט כיבוי).

    • אם מציינים 0 (ברירת מחדל), צריך לטפל בהקדמה בסקריפט של כיבוי.

  • ‫SHUTDOWN_SCRIPT: סקריפט כיבוי.

    • אם מגדירים את PREEMPTION_NOTICE_DURATION לערך 0s (ברירת מחדל), צריך לציין סקריפט כיבוי כדי לטפל בהקצאה מראש. מידע נוסף על הפורמט של סקריפט כיבוי ועל הגדרתו זמין במאמר הרצת סקריפטים של כיבוי.

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

  • ‫TERMINATION_ACTION: אופציונלי: מציינים איזו פעולת סיום תתבצע כש-Compute Engine יבצע preempt למכונה הווירטואלית, או STOP (התנהגות ברירת המחדל) או DELETE.

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

יצירת קבוצת מופעים מנוהלת (MIG) אזורית או אזורית

כדי ליצור קבוצת MIG אזורית או אזורית, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף Instance groups במסוף Google Cloud .

    כניסה לדף Instance groups

  2. לוחצים על Create instance group. ייפתח הדף Create instance group.

  3. בשדה Name, מזינים שם ל-MIG.

  4. ברשימה Instance template, בוחרים את תבנית של הגדרות מכונה שיצרתם בקטע הקודם.

  5. בשדה Number of instances, מזינים את מספר מכונות ה-Spot שרוצים ליצור ב-MIG. אם עומס העבודה שלכם דורש מכונות וירטואליות עם שמות ספציפיים, צריך להזין 0 כדי לדלג על יצירת מכונות וירטואליות בשלב הזה. אחרי שיוצרים את ה-MIG, מוסיפים אליו מכונות וירטואליות עם שמות ספציפיים.

  6. בקטע Location, מציינים אם רוצים ליצור קבוצת MIG אזורית או קבוצת MIG אזורית, באופן הבא:

    1. כדי ליצור קבוצת MIG אזורית, בוחרים באפשרות Single zone (אזור יחיד). לחלופין, כדי ליצור קבוצת MIG אזורית, בוחרים באפשרות אזורים מרובים.

    2. בוחרים את האזור ואת התחומים של ה-MIG.

  7. לוחצים על יצירה.

gcloud

כדי ליצור קבוצת מופעים מנוהלת, משתמשים בפקודה gcloud compute instance-groups managed create.

בהתאם לסוג ה-MIG שרוצים ליצור, כוללים את הפלאגים הבאים בפקודה:

  • כדי ליצור קבוצת MIG אזורית, צריך לכלול את הדגל --zone:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE
    
  • כדי ליצור קבוצת MIG אזורית, כוללים את הדגל --region:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION
    

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

  • ‫INSTANCE_GROUP_NAME: השם של ה-MIG.

  • ‫INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית הגדרות המכונה שיצרתם בקטע הקודם. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:

    • בתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID

    • לתבנית גלובלית של הגדרות מכונה: INSTANCE_TEMPLATE_ID

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

  • ‫ZONE: האזור שבו רוצים ליצור את ה-MIG האזורי. אם משתמשים בתבנית של הגדרות מכונה אזורית כדי ליצור את ה-MIG, צריך לציין תחום (zone) באותו אזור כמו התבנית.

  • ‫REGION: האזור שבו יוצרים את קבוצת ה-MIG האזורית. אם משתמשים בתבנית של הגדרות מכונה אזורית כדי ליצור את ה-MIG, צריך לציין את אותו אזור כמו האזור של התבנית.

REST

כדי ליצור MIG, שולחים בקשת POST לאחת מהשיטות הבאות:

  • כדי ליצור קבוצת MIG אזורית, שולחים בקשת POST אל ה-method‏ instanceGroupManagers.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "targetSize": SIZE
    }
    
  • כדי ליצור קבוצת MIG אזורית, שולחים בקשת POST אל ה-method‏ regionInstanceGroupManagers.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "targetSize": SIZE
    }
    

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

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את ה-MIG האזורי או האזורי.

  • ‫ZONE: האזור שבו רוצים ליצור את ה-MIG האזורי. אם משתמשים בתבנית של הגדרות מכונה אזורית כדי ליצור את ה-MIG, צריך לציין תחום (zone) באותו אזור כמו התבנית.

  • ‫REGION: האזור שבו יוצרים את קבוצת ה-MIG האזורית. אם משתמשים בתבנית של הגדרות מכונה אזורית כדי ליצור את ה-MIG, צריך לציין את אותו אזור כמו האזור של התבנית.

  • ‫INSTANCE_GROUP_NAME: השם של ה-MIG.

  • ‫INSTANCE_TEMPLATE_URL: כתובת ה-URL של תבנית הגדרות המכונה שיצרתם בקטע הקודם. כתובת ה-URL יכולה להכיל את המזהה או את השם של תבנית של הגדרות מכונה. מציינים אחד מהערכים הבאים:

    • בתבנית של הגדרות מכונה אזורית: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID

    • לתבנית גלובלית של הגדרות מכונה: INSTANCE_TEMPLATE_ID

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

אחרי שיוצרים את ה-MIG, אפשר לראות את הפרטים שלו כדי לבדוק את המאפיינים שלו.

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