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

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

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

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

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

הגבלות

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

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

  • מגבלת הזמן המינימלית היא 30 שניות ומגבלת הזמן המקסימלית היא 120 ימים.

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

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

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

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

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

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

  • חותמת הזמן של סיום הפעולה של מכונה וירטואלית (terminationTimestamp) היא שדה לקריאה בלבד שמייצג את הזמן המתוכנן לסיום אוטומטי, והיא מוגדרת באופן אוטומטי על ידי Compute Engine בכל פעם שלמכונה וירטואלית יש מגבלת זמן והיא עוברת למצב RUNNING.

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

  • חותמת הזמן של הסיום מוגדרת מחדש באופן אוטומטי בכל פעם שמפעילים מחדש את מכונת ה-VM או מחדשים את הפעולה שלה, בהתאם לסוג מגבלת הזמן שהגדרתם:

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

הגדרת משך זמן

משך מייצג את זמן הריצה הכולל שרוצים להגדיר למכונה וירטואלית. כדי ליצור מכונה וירטואלית שמסתיימת אוטומטית אחרי שהיא פועלת למשך זמן מסוים, משתמשים ב Google Cloud מסוף, ב-Google Cloud CLI, ב-Terraform או ב-Compute Engine API.

המסוף

  1. נכנסים לדף Create an instance במסוף Google Cloud .

    כניסה לדף Create an instance

  2. בקטע Availability policies, מרחיבים את VM provisioning model advanced settings.

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

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

  5. ברשימה On VM termination בוחרים מה יקרה כשהזמן שחלף מאז הפעלת מכונת ה-VM יגיע למגבלת הזמן שצוינה:

    • כדי לעצור את מכונת ה-VM באופן אוטומטי, בוחרים באפשרות Stop (ברירת מחדל).
    • כדי למחוק את המכונה הווירטואלית, לוחצים על מחיקה.
  6. אופציונלי: מציינים אפשרויות אחרות למכונה הווירטואלית. מידע נוסף זמין במאמר יצירה והפעלה של מכונה וירטואלית.

  7. כדי ליצור את המכונה הווירטואלית ולהפעיל אותה, לוחצים על Create.

gcloud

כדי ליצור מכונה וירטואלית מה-CLI של gcloud, משתמשים בפקודה gcloud compute instances create.

  • כדי ליצור מכונה וירטואלית (VM) שמסתיימת אוטומטית אחרי משך זמן מסוים, צריך לכלול את הדגל --max-run-duration.
  • כדי לציין את פעולת הסיום, צריך לכלול את הדגל --instance-termination-action.
  • מגדירים את הדגל --discard-local-ssds-at-termination-timestamp:
    • אם למכונה הווירטואלית יש כונני SSD מקומיים ופעולת הסיום (TERMINATION_ACTION) היא עצירה (STOP), צריך לכלול את הדגל --discard-local-ssds-at-termination-timestamp=true.
    • אם לא, משמיטים את הדגל --discard-local-ssds-at-termination-timestamp.
gcloud compute instances create VM_NAME \
    --max-run-duration=DURATION \
    --instance-termination-action=TERMINATION_ACTION

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

  • ‫VM_NAME: השם של המכונה הווירטואלית החדשה.
  • ‫DURATION: משך הזמן שרוצים שהמכונה הווירטואלית תפעל לפני שהיא תסתיים באופן אוטומטי. מגדירים את משך הזמן כמספר הימים, השעות, הדקות והשניות, ואחריהם d,‏ h,‏ m ו-s בהתאמה. לדוגמה, כדי להגדיר משך זמן של 30 דקות, מציינים 30m, וכדי להגדיר משך זמן של יום אחד, שעתיים, 3 דקות ו-4 שניות, מציינים 1d2h3m4s. משך הזמן המינימלי הוא 30 שניות (30s) והמקסימלי הוא 120 ימים (120d).
  • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית הזו, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). הדרישה להגדיר את השדה הזה או ערך ברירת המחדל שלו משתנה בהתאם למודל ההקצאה של המכונה הווירטואלית:
    • אם מדובר ב-VM במודל Spot (אם נעשה שימוש בדגל --provisioning-model=SPOT), הדגל --instance-termination-action=TERMINATION_ACTION הוא אופציונלי. אם לא מציינים את הדגל הזה, פעולת ברירת המחדל של סיום היא עצירה.
    • אחרת (ברירת המחדל), צריך להשתמש בדגל --instance-termination-action=TERMINATION_ACTION.

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

Terraform

כדי ליצור מכונה וירטואלית באמצעות Terraform, משתמשים במשאב google_compute_instance.

  • כדי ליצור מכונה וירטואלית שמסתיימת אוטומטית אחרי פרק זמן מסוים, צריך לכלול את הארגומנט max_run_duration.
  • כדי לציין את פעולת הסיום, צריך לכלול את הארגומנט instance_termination_action. חובה לכלול את הארגומנט instance_termination_action, אלא אם יוצרים VM במודל Spot (מגדירים את הארגומנט provisioning_model לערך SPOT), שברירת המחדל שלה היא עצירה (STOP).
  • מגדירים את הארגומנט on_instance_stop_action:
    • אם למכונה הווירטואלית יש כונני SSD מקומיים ופעולת הסיום (הארגומנט instance_termination_action) היא עצירה (STOP), צריך להגדיר את הארגומנט on_instance_stop_action כ-true ‏ (true).
    • אחרת, משמיטים את הארגומנט on_instance_stop_action.

מידע נוסף מופיע במאמרי העזרה של Terraform בנושא משאב google_compute_instance.

REST

כדי ליצור מכונה וירטואלית באמצעות Compute Engine API, משתמשים ב-method ‏instances.insert. צריך לציין שם, סוג מכונה ודיסק אתחול למכונה הווירטואלית.

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ]
  "scheduling":
  {
    "maxRunDuration":
    {
      "seconds": DURATION
    },
    "instanceTerminationAction": "TERMINATION_ACTION"
  },
}

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

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
  • ‫ZONE: האזור שבו יוצרים את המכונה הווירטואלית. האזור צריך לתמוך גם בסוג המכונה שבה משתמשים במכונה הווירטואלית החדשה.
  • ‫MACHINE_TYPE: סוג המכונה המוגדר מראש או בהתאמה אישית של המכונה הווירטואלית החדשה.
  • ‫VM_NAME: השם של המכונה הווירטואלית החדשה.
  • ‫IMAGE_PROJECT: הפרויקט שמכיל את התמונה. לדוגמה, אם מציינים את family/debian-10 כתמונה, מציינים את debian-cloud כפרויקט התמונה.
  • ‫IMAGE: התמונה של המכונה הווירטואלית החדשה. אפשר לציין גרסה ספציפית של תמונה ציבורית או משפחת תמונות. לדוגמה, אם מציינים את family/debian-10 כתמונה ואת debian-cloud כפרויקט התמונה, Compute Engine יוצר מכונה וירטואלית מהגרסה העדכנית של קובץ האימג' של מערכת ההפעלה במשפחת התמונות של Debian 10.
  • ‫DURATION: משך הזמן בשניות שרוצים שהמכונה הווירטואלית הזו תפעל לפני שהיא תסתיים באופן אוטומטי. משך הזמן המינימלי הוא 30 שניות (30s) והמקסימלי הוא 120 ימים (120d).
  • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). אם השדה הזה נדרש או שיש לו ערך ברירת מחדל, זה משתנה בהתאם למודל ההקצאה של המכונה הווירטואלית:
    • אם זו מכונת VM מסוג Spot (אם נעשה שימוש בשדה "provisioningModel": "SPOT" של מכונת ה-VM), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא אופציונלי. אם משמיטים את השדה הזה, פעולת ברירת המחדל לסיום היא עצירה.
    • אחרת (ברירת המחדל), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא חובה.

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

הגדרת שעה

השעה מייצגת את התאריך, השעה ואזור הזמן שבהם רוצים להפסיק את פעילות מכונת ה-VM. כדי ליצור מכונה וירטואלית שמסתיימת באופן אוטומטי בזמן ספציפי, משתמשים במסוף Google Cloud , ב-Google Cloud CLI או ב-Compute Engine API.

המסוף

  1. נכנסים לדף Create an instance במסוף Google Cloud .

    כניסה לדף Create an instance

  2. בקטע Availability policies (מדיניות הזמינות), מרחיבים את VM provisioning model advanced settings (הגדרות מתקדמות של מודל הקצאת מכונות וירטואליות).

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

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

  5. ברשימה On VM termination בוחרים מה יקרה כשהזמן שחלף מאז הפעלת מכונת ה-VM יגיע למגבלת הזמן שצוינה:

    • כדי לעצור את מכונת ה-VM באופן אוטומטי, בוחרים באפשרות Stop (ברירת מחדל).
    • כדי למחוק את המכונה הווירטואלית, לוחצים על מחיקה.
  6. אופציונלי: מציינים אפשרויות אחרות למכונה הווירטואלית. מידע נוסף זמין במאמר יצירה והפעלה של מכונה וירטואלית.

  7. כדי ליצור את המכונה הווירטואלית ולהפעיל אותה, לוחצים על Create.

gcloud

כדי ליצור מכונה וירטואלית (VM) באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud compute instances create.

  • כדי ליצור מכונה וירטואלית שתסתיים באופן אוטומטי בזמן מסוים, צריך לכלול את הדגל --termination-time.
  • כדי לציין את פעולת הסיום, צריך לכלול את הדגל --instance-termination-action, שהוא אופציונלי ל-VM במודל Spot.
  • מגדירים את הדגל --discard-local-ssds-at-termination-timestamp:
    • אם למכונה הווירטואלית יש כונני SSD מקומיים והוגדרה פעולת סיום (TERMINATION_ACTION) לעצירה (STOP), צריך לכלול את הדגל --discard-local-ssds-at-termination-timestamp=true.
    • אם לא, משמיטים את הדגל --discard-local-ssds-at-termination-timestamp.
gcloud compute instances create VM_NAME \
    --termination-time=TIME \
    --instance-termination-action=TERMINATION_ACTION

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

  • ‫VM_NAME: השם של המכונה הווירטואלית החדשה.
  • ‫TIME: השעה שבה רוצים שהמכונה הווירטואלית הזו תופסק באופן אוטומטי. הזמן שציינתם חייב להיות לפחות 30 שניות בעתיד, ולכל היותר 120 ימים בעתיד. מגדירים את הזמן כחותמת זמן בפורמט RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

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

    • ‫YYYY-MM-DD: תאריך בפורמט של שנה ב-4 ספרות, חודש ב-2 ספרות ויום בחודש ב-2 ספרות, עם מקפים להפרדה.
    • ‫HH:MM:SS: שעה בפורמט של 24 שעות, עם שתי ספרות לשעה, שתי ספרות לדקה ושתי ספרות לשנייה, מופרדות בנקודתיים.
    • ‫OFFSET: אזור הזמן בפורמט של היסט מהזמן האוניברסלי המתואם (UTC). לדוגמה, כדי להשתמש בשעון החוף המערבי של ארה"ב (PST), שמקדים ב-8 שעות את שעון UTC, מציינים -08:00. לחלופין, כדי לא להשתמש בהזחה (UTC+0), מציינים Z.
  • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית הזו, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). הדרישה להגדיר את השדה הזה או ערך ברירת המחדל שלו משתנה בהתאם למודל ההקצאה של המכונה הווירטואלית:

    • אם מדובר ב-VM במודל Spot (אם נעשה שימוש בדגל --provisioning-model=SPOT), הדגל --instance-termination-action=TERMINATION_ACTION הוא אופציונלי. אם משמיטים את הדגל הזה, פעולת הסיום שמוגדרת כברירת מחדל היא עצירה.
    • אחרת (ברירת המחדל), צריך להשתמש בדגל --instance-termination-action=TERMINATION_ACTION.

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

REST

כדי ליצור מכונה וירטואלית מ-Compute Engine API, משתמשים ב-method ‏instances.insert. צריך לציין שם, סוג מכונה ודיסק אתחול למכונה הווירטואלית.

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ]
  "scheduling":
  {
    "terminationTime": "TIME",
    "instanceTerminationAction": "TERMINATION_ACTION"
  },
}

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

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
  • ‫ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית. האזור צריך לתמוך גם בסוג המכונה שבה משתמשים ב-VM החדש.
  • ‫MACHINE_TYPE: סוג המכונה מוגדר מראש או מותאם אישית של המכונה הווירטואלית החדשה.
  • ‫VM_NAME: השם של המכונה הווירטואלית החדשה.
  • ‫IMAGE_PROJECT: הפרויקט שמכיל את התמונה. לדוגמה, אם מציינים את family/debian-10 כתמונה, צריך לציין את debian-cloud כפרויקט התמונה.
  • ‫IMAGE: קובץ האימג' של המכונה הווירטואלית החדשה. אפשר לציין גרסה ספציפית של קובץ אימג' ציבורי או משפחת קובצי אימג'. לדוגמה, אם מציינים את family/debian-10 כתמונה ואת debian-cloud כפרויקט התמונה, ‏ Compute Engine יוצר מכונה וירטואלית מהגרסה העדכנית של קובץ אימג' של מערכת ההפעלה במשפחת התמונות Debian 10.
  • ‫TIME: השעה שבה רוצים שהמכונה הווירטואלית הזו תופסק באופן אוטומטי. הזמן שאתם מציינים צריך להיות לפחות 30 שניות מהזמן הנוכחי ולכל היותר 120 ימים מהזמן הנוכחי. מגדירים את השעה כחותמת זמן בפורמט RFC 3339:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

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

    • ‫YYYY-MM-DD: תאריך בפורמט של שנה ב-4 ספרות, חודש ב-2 ספרות ויום בחודש ב-2 ספרות, עם מקפים להפרדה.
    • ‫HH:MM:SS: שעה בפורמט של 24 שעות, עם שתי ספרות לשעה, שתי ספרות לדקה ושתי ספרות לשנייה, מופרדות בנקודתיים.
    • ‫OFFSET: אזור הזמן בפורמט של היסט מהזמן האוניברסלי המתואם (UTC). לדוגמה, כדי להשתמש בשעון החוף המערבי של ארה"ב (PST), שמקדים ב-8 שעות את שעון UTC, מציינים -08:00. לחלופין, כדי לא להשתמש בהזחה (UTC+0), מציינים Z.
  • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית הזו, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). הדרישה למילוי השדה הזה או ערך ברירת המחדל שלו משתנים בהתאם למודל ההקצאה של המכונה הווירטואלית::

    • אם מדובר ב-VM במודל Spot (אם נעשה שימוש בשדה "provisioningModel": "SPOT"), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא אופציונלי. אם משמיטים את השדה הזה, פעולת ברירת המחדל לסיום היא עצירה.
    • אחרת (ברירת המחדל), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא חובה.

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

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

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

כדי לעדכן את המאפיינים שקשורים לתזמון של המכונה הווירטואלית, אתם יכולים להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-Compute Engine API, כמו שמתואר בקטע הזה. בשיטה הזו צריך קודם לעצור את ה-VM, אחר כך לעדכן את המאפיינים שלו ואז להפעיל אותו מחדש. לחלופין, אם רוצים לעדכן בו-זמנית מאפיינים נוספים של מכונה וירטואלית ולהפסיק ולהפעיל מחדש מכונה וירטואלית באופן אוטומטי, אפשר לעיין במאמר בנושא עדכון מאפיינים של מכונה וירטואלית.

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. בעמודה Name (שם), לוחצים על שם המכונה הווירטואלית שרוצים לעדכן.

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

    1. אם המכונה הווירטואלית פועלת, לוחצים על עצירה כדי לעצור אותה.
    2. כדי לערוך את המכונה הווירטואלית, לוחצים על Edit (עריכה).
    3. בדף Edit instance (עריכת מופע), מבצעים את הפעולות הבאות:

      1. בקטע Availability policies, משנים את התיבה Set a time limit for the VM ואת השדות שמתחתיה לפי הצורך.

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

      2. כדי לשמור את השינויים, לוחצים על שמירה.

    4. אופציונלי: אם רוצים להפעיל את המכונה הווירטואלית עכשיו, לוחצים על הפעלה.

gcloud

כדי לעדכן את מגבלת הזמן של מכונה וירטואלית באמצעות ה-CLI של gcloud, מבצעים את השלבים הבאים:

  1. אם ה-VM פועל, עוצרים אותו באמצעות הפקודה gcloud compute instances stop:

    gcloud compute instances stop VM_NAME
    

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

  2. מעדכנים את מגבלת הזמן של ה-VM באמצעות הפקודה gcloud compute instances set-scheduling.

    gcloud compute instances set-scheduling VM_NAME \
        --max-run-duration=DURATION \
        --termination-time=TIME \
        --instance-termination-action=TERMINATION_ACTION \
        --discard-local-ssds-at-termination-timestamp=true
    

    מגדירים את הדגלים הבאים:

    • כדי להגדיר את מגבלת הזמן כזמן או כמשך, בהתאמה, צריך להשמיט את הדגל --max-run-duration או את הדגל --termination-time.
    • כוללים את הדגל --instance-termination-action כדי להגדיר את פעולת הסיום.
    • אם למכונה הווירטואלית יש כונני SSD מקומיים ופעולת הסיום (TERMINATION_ACTION) מוגדרת לעצירה (STOP), צריך לכלול את הדגל --discard-local-ssds-at-termination-timestamp=true. אחרת, משמיטים את הדגל --discard-local-ssds-at-termination-timestamp=true.

    אחר כך מחליפים את הערכים הבאים:

    • ‫VM_NAME: השם של מכונת ה-VM שרוצים לעדכן.
    • ‫DURATION: משך הזמן שבו רוצים שהמכונה הווירטואלית הזו תפעל לפני שהיא תופסק באופן אוטומטי. מגדירים את משך הזמן כמספר הימים, השעות, הדקות והשניות, ואחריו מוסיפים את הערכים d, h, m ו-s בהתאמה. לדוגמה, מציינים 30m למשך 30 דקות, או מציינים 1d2h3m4s למשך יום אחד, שעתיים, 3 דקות ו-4 שניות. משך הזמן המינימלי הוא 30 שניות (30s) והמקסימלי הוא 120 ימים (120d).
    • ‫TIME: השעה שבה רוצים שהמכונה הווירטואלית הזו תופסק באופן אוטומטי. הזמן שאתם מציינים צריך להיות לפחות 30 שניות מהזמן הנוכחי ולכל היותר 120 ימים מהזמן הנוכחי. מגדירים את הזמן כחותמת זמן בפורמט RFC 3339:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • ‫YYYY-MM-DD: תאריך בפורמט של שנה בת 4 ספרות, חודש בן 2 ספרות ויום בחודש בן 2 ספרות, עם מקפים להפרדה.
      • ‫HH:MM:SS: שעה בפורמט של 2 ספרות, דקה בפורמט של 2 ספרות ושנייה בפורמט של 2 ספרות, מופרדות בנקודתיים.
      • OFFSET: אזור הזמן בפורמט של היסט מזמן אוניברסלי מתואם (UTC). לדוגמה, כדי להשתמש בשעון החוף המערבי של ארה"ב (PST), שמקדים ב-8 שעות את שעון UTC, מציינים -08:00. לחלופין, כדי לא להשתמש בהזחה (UTC+0), מציינים Z.
    • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית הזו, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). הדרישה להגדיר את השדה הזה או ערך ברירת המחדל שלו משתנה בהתאם למודל ההקצאה של המכונה הווירטואלית:

      • אם מדובר ב-VM במודל Spot (אם נעשה שימוש בדגל --provisioning-model=SPOT), הדגל --instance-termination-action=TERMINATION_ACTION הוא אופציונלי. אם לא מציינים את הדגל הזה, פעולת ברירת המחדל של סיום היא עצירה.
      • אחרת (ברירת מחדל), חובה להשתמש בדגל --instance-termination-action=TERMINATION_ACTION.
  3. אם רוצים שה-VM יתחיל לפעול, מפעילים אותו באמצעות הפקודה gcloud compute instances start:

    gcloud compute instances start VM_NAME
    

    מחליפים את VM_NAME בשם המכונה הווירטואלית.

REST

כדי לעדכן את מגבלת הזמן של מכונה וירטואלית באמצעות Compute Engine API, מבצעים את השלבים הבאים:

  1. אם ה-VM פועל, עוצרים אותו באמצעות השיטה instances.stop:

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

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

    • ‫PROJECT_ID: מזהה הפרויקט שמכיל את ה-VM.
    • ‫ZONE: האזור שבו נמצאת המכונה הווירטואלית.
    • ‫VM_NAME: השם של המכונה הווירטואלית שרוצים לעדכן.
  2. מעדכנים את המאפיין scheduling של ה-VM, כולל שדות למגבלת הזמן של ה-VM, באמצעות השיטה instances.setScheduling. כדי להגדיר את מגבלת הזמן כמשך או כזמן, בהתאמה, צריך לכלול את השדה maxRunDuration או את השדה terminationTime:

    • כדי להגדיר משך זמן, משתמשים בבקשה הבאה:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
      {
        "maxRunDuration":
        {
          "seconds": DURATION
        },
        "instanceTerminationAction": "TERMINATION_ACTION"
      }
      
    • כדי להגדיר זמן, משתמשים בבקשה הבאה:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
      {
        "terminationTime": "TIME",
        "instanceTerminationAction": "TERMINATION_ACTION"
      }
      

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

    • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.
    • ‫ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית. האזור צריך לתמוך גם בסוג המכונה שבה רוצים להשתמש עבור המכונה הווירטואלית החדשה.
    • ‫MACHINE_TYPE: סוג המכונה המוגדר מראש או בהתאמה אישית של המכונה הווירטואלית החדשה.
    • ‫VM_NAME: השם של המכונה הווירטואלית החדשה.
    • ‫IMAGE_PROJECT: הפרויקט שמכיל את התמונה. לדוגמה, אם מציינים את family/debian-10 כתמונה, מציינים את debian-cloud כפרויקט התמונה.
    • ‫IMAGE: קובץ האימג' של המכונה הווירטואלית החדשה. אפשר לציין גרסה ספציפית של תמונה ציבורית או משפחת תמונות. לדוגמה, אם מציינים את family/debian-10 כתמונה ואת debian-cloud כפרויקט התמונה, ‏ Compute Engine יוצר מכונה וירטואלית מהגרסה העדכנית של קובץ אימג' של מערכת ההפעלה במשפחת התמונות Debian 10.
    • ‫DURATION: משך הזמן בשניות שבו רוצים שהמכונה הווירטואלית הזו תפעל לפני שהיא תופסק באופן אוטומטי. משך הזמן המינימלי הוא 30 שניות (30s) והמקסימלי הוא 120 ימים (120d).
    • ‫TIME: השעה שבה רוצים שהמכונה הווירטואלית הזו תופסק באופן אוטומטי. הזמן שאתם מציינים צריך להיות לפחות 30 שניות מהזמן הנוכחי ולכל היותר 120 ימים מהזמן הנוכחי. מגדירים את השעה כחותמת זמן בפורמט RFC 3339:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

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

      • ‫YYYY-MM-DD: תאריך בפורמט של שנה ב-4 ספרות, חודש ב-2 ספרות ויום בחודש ב-2 ספרות, עם מקפים להפרדה.
      • ‫HH:MM:SS: שעה בפורמט של 24 שעות, עם שתי ספרות לשעה, שתי ספרות לדקה ושתי ספרות לשנייה, מופרדות בנקודתיים.
      • ‫OFFSET: אזור הזמן בפורמט של היסט מהזמן האוניברסלי המתואם (UTC). לדוגמה, כדי להשתמש בשעון החוף המערבי של ארה"ב (PST), שמקדים ב-8 שעות את שעון UTC, מציינים -08:00. לחלופין, כדי לא להשתמש בהזחה (UTC+0), מציינים Z.
    • ‫TERMINATION_ACTION: פעולת הסיום של המכונה הווירטואלית, שיכולה להיות עצירה (STOP) או מחיקה (DELETE). אם השדה הזה נדרש או שיש לו ערך ברירת מחדל, זה תלוי במודל ההקצאה של המכונה הווירטואלית:

      • אם מדובר ב-VM במודל Spot (אם נעשה שימוש בשדה "provisioningModel": "SPOT"), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא אופציונלי. אם משמיטים את השדה הזה, פעולת הסיום שמוגדרת כברירת מחדל היא עצירה.
      • אחרת (ברירת מחדל), השדה "instanceTerminationAction": "TERMINATION_ACTION" הוא חובה.
  3. אם רוצים שה-VM יתחיל לפעול, מפעילים אותו באמצעות השיטה instances.start:

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

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

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

מעקב אחרי זמן הריצה של מכונה וירטואלית

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

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

    1. הצגת הפרטים של מכונה וירטואלית
    2. בפלט, בודקים את השדה של חותמת הזמן לסיום של המכונה הווירטואלית:
      • אם אתם משתמשים במסוף Google Cloud , תוכלו לראות את השדה Max duration.
      • אם משתמשים ב-Google Cloud CLI או ב-Compute Engine API, צריך לעיין בשדה terminationTimestamp.
  • כדי לוודא שמכונה וירטואלית הופסקה אוטומטית, אפשר לראות את הפעולות של המכונה הווירטואלית:

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

      • ‫compute.instances.deferredStop מציין פעולת סיום אוטומטית של עצירה
      • ‫compute.instances.deferredDelete מציין פעולת סיום אוטומטית של מחיקה

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