קיצור זמן ההשבתה של מכונות Compute Engine

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

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

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

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

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

    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 .

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

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

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

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

כדי להגדיר מופע כך שידלג על כיבוי מערכת ההפעלה של האורח, צריך את ההרשאות הבאות:

  • כדי ליצור מופע:
    • compute.instances.create בפרויקט
    • כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM): compute.images.useReadOnly בקובץ אימג'
    • כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית: compute.snapshots.useReadOnly בקובץ ה-snapshot
    • כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית: compute.instanceTemplates.useReadOnly בתבנית של הגדרות המכונה
    • כדי להקצות רשת מדור קודם למכונה הווירטואלית: compute.networks.use בפרויקט
    • כדי לציין כתובת IP סטטית למכונה הווירטואלית: compute.addresses.use בפרויקט
    • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם: compute.networks.useExternalIp בפרויקט
    • כדי לציין רשת משנה למכונה הווירטואלית: compute.subnetworks.use בפרויקט או ברשת המשנה שנבחרה
    • כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC: compute.subnetworks.useExternalIp בפרויקט או ברשת המשנה שנבחרה
    • כדי להגדיר מטא-נתונים של המכונה הווירטואלית: compute.instances.setMetadata בפרויקט
    • כדי להגדיר תגים למכונה הווירטואלית: compute.instances.setTags במכונה הווירטואלית
    • כדי להגדיר תוויות למכונה הווירטואלית: compute.instances.setLabels במכונה הווירטואלית
    • כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית: compute.instances.setServiceAccount במכונה הווירטואלית
    • כדי ליצור דיסק חדש למכונה הווירטואלית: compute.disks.create בפרויקט
    • כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה: compute.disks.use בדיסק
    • כדי לצרף דיסק קיים במצב קריאה-בלבד: compute.disks.useReadOnly בדיסק
  • כדי ליצור תבנית של הגדרות מכונה: compute.instanceTemplates.create בפרויקט
  • כדי לעדכן מכונה: compute.instances.update במכונה

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

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

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

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

אפשר להגדיר מכונת חישוב לדלג על כיבוי מערכת ההפעלה של האורח רק אם המכונה מושבתת (TERMINATED).

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

gcloud

  1. אם עדיין לא עשיתם את זה, מפסיקים את המופע.

  2. כדי להגדיר מכונה כך שתדלג על כיבוי מערכת ההפעלה האורחת, משתמשים בפקודה gcloud beta compute instances set-scheduling עם הדגל --skip-guest-os-shutdown:

    gcloud compute instances set-scheduling INSTANCE_NAME \
        --skip-guest-os-shutdown \
        --zone=ZONE
    

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

    • INSTANCE_NAME: השם של המכונה.

    • ZONE: האזור שבו המכונה קיימת.

REST

  1. אם עדיין לא עשיתם את זה, מפסיקים את המופע.

  2. כדי להגדיר מכונה כך שתדלג על כיבוי מערכת ההפעלה של האורח, שולחים בקשת POST אל ה-method‏ instances.setScheduling. בגוף הבקשה, כוללים את השדה skipGuestOsShutdown ומגדירים אותו ל-true:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling
    
    {
      "skipGuestOsShutdown": true
    }
    

מידע נוסף על עדכון מופע זמין במאמר בנושא עדכון מאפייני מופע.

הגדרת כיבוי של מערכת הפעלה אורחת בזמן יצירת מכונה

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

gcloud

כדי ליצור מכונה שמוגדרת לדלג על כיבוי מערכת ההפעלה האורחת, משתמשים בפקודה gcloud compute instances create עם הדגל --skip-guest-os-shutdown:

gcloud compute instances create INSTANCE_NAME \
    --machine-type=MACHINE_TYPE \
    --skip-guest-os-shutdown \
    --zone=ZONE

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

  • INSTANCE_NAME: השם של המכונה.

  • MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופע.

  • ZONE: האזור שבו רוצים ליצור את המכונה.

REST

כדי ליצור מכונה שמוגדרת לדלג על כיבוי מערכת ההפעלה של האורח, שולחים בקשת POST אל ה-method‏ instances.insert. בגוף הבקשה, כוללים את השדה skipGuestOsShutdown עם הערך true:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "skipGuestOsShutdown": true
  }
}

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

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

  • ZONE: האזור שבו רוצים ליצור את המכונה.

  • INSTANCE_NAME: השם של המכונה.

  • MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופע.

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

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

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

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

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

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

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

gcloud

כדי ליצור כמות גדולה של מכונות שמוגדרות לדלג על כיבוי מערכת ההפעלה האורחת, משתמשים בפקודה gcloud compute instances bulk create עם הדגל --skip-guest-os-shutdown.

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

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --skip-guest-os-shutdown \
    --zone=ZONE

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

  • COUNT: מספר המופעים שרוצים ליצור.

  • MACHINE_TYPE: סוג המכונה לשימוש במופעים.

  • NAME_PATTERN: תבנית השם של המכונות. כדי להחליף סדרה של מספרים בשם של מופע, משתמשים בסדרה של תווים מסוג סולמית (#). לדוגמה, אם משתמשים ב-instance-# כתבנית שם, ‏ Compute Engine יוצר מכונות עם שמות שמתחילים ב-instance-1, ‏ instance-2, וממשיך עם התבנית הזו עד למספר המכונות שמציינים ב-COUNT.

  • ZONE: האזור שבו רוצים ליצור מופעים.

REST

כדי ליצור כמות גדולה של מכונות שמוגדרות לדלג על כיבוי מערכת ההפעלה של האורח, שולחים בקשת POST אל ה-method‏ instances.bulkInsert. בגוף הבקשה, כוללים את השדה skipGuestOsShutdown עם הערך true.

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "skipGuestOsShutdown": true
    }
  }
}

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

  • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור כמה מופעים בבת אחת.

  • ZONE: האזור שבו רוצים ליצור מופעים.

  • COUNT: מספר המופעים שרוצים ליצור.

  • NAME_PATTERN: תבנית השם של המכונות. כדי להחליף סדרה של מספרים בשם של מופע, משתמשים בסדרה של תווים מסוג סולמית (#). לדוגמה, אם משתמשים ב-instance-# כתבנית שם, ‏ Compute Engine יוצר מכונות עם שמות שמתחילים ב-instance-1, ‏ instance-2, וממשיך עם התבנית הזו עד למספר המכונות שמציינים ב-COUNT.

  • MACHINE_TYPE: סוג המכונה לשימוש במופעים.

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

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

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

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

מידע נוסף על יצירת כמות גדולה של מכונות זמין במאמר בנושא יצירת כמות גדולה של מכונות.

הגדרת כיבוי של מערכת הפעלה של אורח בזמן יצירת תבנית של הגדרות מכונה

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

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

gcloud

כדי ליצור תבנית של הגדרות מכונה שמוגדרת לדלג על כיבוי מערכת ההפעלה האורחת, משתמשים בפקודה gcloud compute instance-templates create עם הדגל --skip-guest-os-shutdown.

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

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --skip-guest-os-shutdown

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

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

  • REGION: האזור שבו רוצים ליצור את תבנית של הגדרות מכונה.

  • MACHINE_TYPE: סוג המכונה שצריך לציין בתבנית של הגדרות המכונה.

REST

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

בגוף הבקשה, כוללים את השדה skipGuestOsShutdown עם הערך true.

לדוגמה, כדי ליצור תבנית של הגדרות מכונה אזורית שבה מצוין לדלג על כיבוי מערכת ההפעלה של האורח, שולחים בקשת 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": {
      "skipGuestOsShutdown": true
    }
  }
}

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

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

  • REGION: האזור שבו רוצים ליצור את תבנית של הגדרות מכונה.

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

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

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

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

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

  • MACHINE_TYPE: סוג המכונה שצריך לציין בתבנית של הגדרות המכונה.

מידע נוסף על יצירת תבנית של הגדרות מכונה זמין במאמר יצירת תבניות של הגדרות מכונה.

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

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

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

gcloud

כדי לראות את הפרטים של מכונה ולבדוק אם היא מדלגת על כיבוי מערכת ההפעלה של האורח, משתמשים בפקודה gcloud compute instances describe:

gcloud compute instances describe INSTANCE_NAME \
    --zone=ZONE

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

  • INSTANCE_NAME: השם של המכונה.

  • ZONE: האזור שבו המכונה קיימת.

אם הגדרתם את המכונה לדלג על כיבוי מערכת ההפעלה של האורח, הפלט יכיל את השדה skipGuestOsShutdown עם הערך true, כמו בדוגמה הבאה:

...
scheduling:
  automaticRestart: true
  skipGuestOsShutdown: true
  onHostMaintenance: MIGRATE
  preemptible: false
  provisioningModel: STANDARD
...

אחרת, אם השדה skipGuestOsShutdown חסר או מוגדר לערך false, מערכת ההפעלה של האורח משתמשת בזמן ברירת המחדל לכיבוי.

REST

כדי לראות את הפרטים של מכונה ולבדוק אם היא מדלגת על כיבוי מערכת ההפעלה של האורח, שולחים בקשת GET אל ה-method‏ instances.get:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

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

  • PROJECT_ID: מזהה הפרויקט שבו נמצא המופע.

  • ZONE: האזור שבו המכונה קיימת.

  • INSTANCE_NAME: השם של המכונה.

אם הגדרתם את המכונה לדלג על כיבוי מערכת ההפעלה של האורח, הפלט יכיל את השדה skipGuestOsShutdown עם הערך true, כמו בדוגמה הבאה:

{
  ...
  "scheduling": {
    "automaticRestart": true,
    "skipGuestOsShutdown": true,
    "onHostMaintenance": "MIGRATE",
    "preemptible": false,
    "provisioningModel": "STANDARD"
  },
  ...
}

אחרת, אם השדה skipGuestOsShutdown חסר או מוגדר לערך false, מערכת ההפעלה של האורח משתמשת בזמן ברירת המחדל לכיבוי.

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