הוספה והסרה של מכונות וירטואליות מקבוצת מופעי מכונה מנוהלים (MIG)

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

כדי להוסיף או להסיר מכונות וירטואליות ב-MIG, אתם יכולים:

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

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

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

    המסוף

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

    gcloud

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

      gcloud init

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

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

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

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

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

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

      gcloud auth application-default login

      אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.

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

    למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.

    REST

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

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

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

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

הגדרת גודל היעד של הקבוצה

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

הוספה והסרה אוטומטית של מכונות וירטואליות ב-MIG

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

מידע נוסף מופיע במאמר התאמה אוטומטית לעומס (scaling) של קבוצות מכונות.

יצירת בקשה לשינוי כמות

אתם יכולים להשתמש בבקשות לשינוי כמות כדי להוסיף בבת אחת מכונות וירטואליות של GPU לקבוצת MIG. התכונה הזו עוזרת לכם להימנע מחיובים על קיבולת חלקית בזמן ש-Compute Engine מקצה את כל המשאבים. בבקשות לשינוי כמות ב-MIG משתמשים במודלים של הקצאה מסוג "התחלה גמישה" או "מבוסס-הזמנה". המודלים האלה מאפשרים לכם לקבל מעבדי vCPU ו-GPU במחיר מוזל.

מידע נוסף זמין במאמר מידע על בקשות לשינוי כמות ב-MIG.

הגדרה ידנית של הגודל של קבוצת MIG

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

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

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

המסוף

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

    כניסה לדף Instance groups

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

  3. לוחצים על Edit כדי לשנות את קבוצת מופעי המכונה המנוהלים.

  4. לוחצים על Group size & autoscaling כדי להרחיב את הקטע.

  5. בשדה Number of instances, מציינים את מספר המופעים שרוצים לכלול בקבוצת מופעי מכונה מנוהלים.

    אם האפשרות Autoscaling מופעלת, הקבוצה מוסיפה או מסירה מכונות באופן אוטומטי לפי הצורך. עם זאת, אתם יכולים לשנות את הערכים של Minimum number of instances ו-Maximum number of instances כדי לשנות באופן עקיף את גודל הקבוצה באמצעות ההתאמה האוטומטית לעומס.

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

gcloud

משתמשים בפקודה resize.

gcloud compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --zone ZONE

REST

מפעילים את ה-method‏ resize למשאב MIG אזורי או מחוזי. מציינים את הגודל החדש של קבוצת המכונות כפרמטר.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resize?size=NEW_SIZE

אם קבוצת המכונות היא קבוצת מופעי מכונה מנוהלים אזורית, מחליפים את zones/ZONE ב-regions/REGION.

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

השבתת מצב ניסיונות חוזרים ליצירה במהלך שינוי הגודל

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

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

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

מגבלות

כדי לשנות את הגודל של קבוצת מכונות מנוהלת כשמצב ניסיונות היצירה מושבת, צריך להשתמש ב-Google Cloud CLI או ב-REST.

gcloud

משתמשים בפקודה beta resize עם הדגל --no-creation-retries.

gcloud beta compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --no-creation-retries \
    [--region REGION | --zone ZONE]

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

  • ‫INSTANCE_GROUP_NAME: השם של קבוצת ה-MIG שרוצים לשנות את הגודל שלה.
  • ‫NEW_SIZE: מספר היעד של המופעים שפועלים בקבוצת מופעי מכונה מנוהלים.
  • ‫ZONE: בקבוצות MIG אזוריות, האזור שבו נמצאת קבוצת ה-MIG.
  • ‫REGION: האזור שבו נמצאת קבוצת ה-MIG (בקבוצות MIG אזוריות).

REST

לקבוצת MIG אזורית, משתמשים ב-method‏ instanceGroupManagers.resizeAdvanced בגרסת בטא, ולקבוצת MIG רגיונלית משתמשים ב-method‏ regionInstanceGroupManagers.resizeAdvanced בגרסת בטא. מציינים את הגודל החדש של הקבוצה ואת השדה noCreationRetries בגוף הבקשה.

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

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeAdvanced

{
 "targetSize": NEW_SIZE,
 "noCreationRetries": true
}

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

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: האזור שבו נמצאת קבוצת ה-MIG. לקבוצת MIG אזורית, מחליפים את zones/ZONE ב-regions/REGION ומציינים את האזור. מידע נוסף זמין במאמר מידע על קבוצות MIG אזוריות.
  • ‫INSTANCE_GROUP_NAME: השם של קבוצת ה-MIG שרוצים לשנות את הגודל שלה.
  • ‫NEW_SIZE: מספר היעד של המכונות הפועלות בקבוצת המכונות המנוהלת.

    כדי לראות אילו מכונות נוצרות ובאיזה מצב, אפשר להשתמש ב-method‏ listManagedInstances. כשהמצב הזה מושבת, למכונות שיוצרים יש currentAction של CREATING_WITHOUT_RETRIES.

הוספה, הסרה או נטישה של מופעים ספציפיים

בקטעים הבאים מוסבר איך להוסיף, להסיר או לנטוש מכונות ספציפיות ב-MIG.

יצירת מכונות עם שמות ספציפיים בקבוצות MIG

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

השמות שאתם מקצים למכונות האלה נשארים גם אם קבוצת ה-MIG יוצרת אותן מחדש. למידע נוסף על שמירת המצב של מכונות MIG, קראו את המאמר קבוצות MIG עם שמירת מצב (stateful).

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

מגבלות

אם יוצרים מכונות עם שמות ספציפיים:

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

אפשר להשתמש ב-CLI של gcloud או ב-REST כדי להוסיף מכונות וירטואליות עם שמות ספציפיים לקבוצת MIG קיימת.

gcloud

משתמשים בפקודה instance-groups managed create-instance.

gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    [--region REGION | --zone ZONE]

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

  • ‫INSTANCE_GROUP_NAME הוא השם של קבוצת ה-MIG האזורית או של קבוצת ה-MIG באזור מסוים שרוצים להוסיף לה מכונה חדשה.
  • ‫INSTANCE_NAME הוא השם שרוצים להקצות למכונה החדשה.

REST

שולחים בקשת POST ל-method‏ regionInstanceGroupManagers.createInstances. לקבוצת מופעי מכונה מנוהלים באזור, משתמשים ב-method‏ instanceGroupManagers.createInstances. בגוף הבקשה, מוסיפים את השדה instances עם שמות של מכונה אחת או יותר.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances
{
  "instances": [
    {
      "name": "INSTANCE_NAME_1"
    },
    {
      "name": "INSTANCE_NAME_2"
    }
  ]
}

מחיקת מופעים ספציפיים מקבוצה

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

כשמוחקים מכונות ספציפיות מ-MIG, חשוב לזכור:

המסוף

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

    כניסה לדף Instance groups

  2. בעמודה Name שברשימה, לוחצים על השם של קבוצת המכונות שבה רוצים למחוק מכונות ספציפיות. ייפתח דף עם המאפיינים של קבוצת המכונות ורשימה של המכונות שכלולות בקבוצה.

  3. בקטע VM instances, בוחרים מכונה אחת או יותר שרוצים למחוק.

  4. לוחצים על Delete.

  5. בתיבת הדו-שיח שמופיעה:

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

    קבוצת ה-MIG מוחקת את המכונות שנבחרו.

gcloud

כדי למחוק מכונה באמצעות ה-CLI של gcloud, משתמשים בפקודה instance-groups managed delete-instances.

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \ 
    [--region REGION | --zone ZONE]

הפקודה מחזירה את סטטוס הפעולה לכל מכונה:

  • אם ה-CLI של gcloud מחק את המכונה, יוחזר הערך SUCCESS.
  • השגיאה FAIL מוחזרת לכל המכונות אם אחת מהמכונות שציינתם בבקשה לא שייכת לקבוצה, אם אחת מהמכונות כבר נמחקה או ננטשה, או אם הבקשה נכשלה מכל סיבה אחרת.
  • הערך SKIPPED מוחזר רק אם משתמשים בדגל --skip-instances-on-validation-error והמכונה לא שייכת לקבוצה, או שהיא כבר נמחקה או ננטשה.
  • הערך MEMBER_NOT_FOUND מוחזר רק לקבוצות אזוריות, כשה-CLI של gcloud לא הצליח לזהות את האזור משם המכונה.

אם אתם צופים שבקשת המחיקה עלולה להתנגש עם פעולות בו-זמניות, השתמשו בדגל --skip-instances-on-validation-error. הדגל הזה מציין אם הבקשה צריכה להמשיך גם אם היא כוללת מכונות שלא שייכות לקבוצה, או שכבר נמחקו או ננטשו – למשל, מכונות שנמחקות על ידי התאמה לעומס (autoscaler). כברירת מחדל, אם משמיטים את הדגל הזה ומציינים מכונה כזו בבקשה, הפעולה נכשלת. הפעולה תמיד נכשלת אם הבקשה מכילה שם מכונה בפורמט שגוי, או הפניה למכונה שקיימת באזור או במחוז שונים מהאזור או מהמחוז של הקבוצה.

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

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1 \
    --skip-instances-on-validation-error

בדוגמה הזו, שלושה מופעים לא עברו את האימות, ולכן המערכת דילגה עליהם, ו-example-instance-3 נמחק:

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE           INSTANCE               STATUS   VALIDATION_ERROR
example-project  us-central1-a  example-instance-1     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-1 that was already deleted.
example-project  us-central1-a  example-instance-2     SKIPPED  Cannot delete instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-2 that was already abandoned.
example-project  us-central1-a  example-instance-3     SUCCESS
example-project  us-central1-a  example-instance-4     SKIPPED  Cannot find instance https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance-4.

אם משמיטים את הדגל --skip-instances-on-validation-error ואחד מהמכונות לא עובר את האימות, אף מכונה לא נמחקת:

gcloud compute instance-groups managed delete-instances example-mig \
    --instances=example-instance-1,example-instance-2,example-instance-3,example-instance-4 \
    --region=us-central1

Updated [https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceGroupManagers/example-mig].
PROJECT          ZONE             INSTANCE              STATUS
example-project  us-central1-a    example-instance-1    FAIL
example-project  us-central1-a    example-instance-2    FAIL
example-project  us-central1-a    example-instance-3    FAIL
example-project  us-central1-a    example-instance-4    FAIL

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

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    --no-graceful-shutdown \
    [--region REGION | --zone ZONE]

REST

שולחים בקשת POST ל-method‏ regionInstanceGroupManagers.deleteInstances. לקבוצת מופעי מכונה מנוהלים באזור, משתמשים ב-method‏ instanceGroupManagers.deleteInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
   ]
}

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

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ],
 "skipInstancesOnValidationError": true
}

כדי לראות את המכונות שדילגו עליהן בפעולה, אפשר להציג את הפעולה. לקבוצות MIG אזוריות, משתמשים ב-method ‏regionOperations.get. בקבוצות MIG אזוריות, משתמשים ב-zoneOperations.get method. האזהרות מופיעות בשדה האזהרה של הפעולה.

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/deleteInstances?noGracefulShutdown=true

{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
   ]
}

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

נטישת מכונות מקבוצת MIG

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

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

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

המסוף

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

    כניסה לדף Instance groups

  2. בעמודה Name שברשימה, לוחצים על השם של קבוצת המכונות שרוצים להסיר ממנה מכונות. ייפתח דף עם המאפיינים של קבוצת המכונות ורשימת המכונות שכלולות בקבוצה.

  3. בקטע VM instances, בוחרים מכונה אחת או יותר שרוצים להסיר מהקבוצה.

  4. לוחצים על הסרה מהקבוצה.

  5. בתיבת הדו-שיח לאישור הסרת המכונות שנבחרו, מקלידים remove ולוחצים על Remove.

    קבוצת ה-MIG מסירה את המכונות שנבחרו מהקבוצה. המכונות שהוסרו ממשיכות לפעול מחוץ לקבוצה.

gcloud

כדי להסיר מכונה מקבוצת המכונות בלי למחוק את המכונה הווירטואלית, משתמשים בפקודה instance-groups managed abandon-instances.

gcloud compute instance-groups managed abandon-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAME_1,INSTANCE_NAME_2 \
    [--region REGION | --zone ZONE]

REST

שולחים בקשת POST ל-method‏ regionInstanceGroupManagers.abandonInstances. לקבוצת מופעי מכונה מנוהלים באזור, משתמשים ב-method‏ instanceGroupManagers.abandonInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/abandonInstances

{
 "instances": [
  "zones/ZONE/instances/INSTANCE_NAME_1",
  "zones/ZONE/instances/INSTANCE_NAME_2"
 ]
}

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

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

אפשר להתאים אישית את השמות של מכונות וירטואליות בקבוצת מופעי מכונה מנוהלים (MIG) על ידי הגדרת השדה baseInstanceName. ‫Compute Engine יוצר שמות של מכונות לפי אחת מהתבניות הבאות:

  • מספור עוקב: מגדירים את baseInstanceName למחרוזת שכוללת תו סולמית אחד או יותר (#) כדי להגדיר תבנית מספור. ‫Compute Engine מחליף את תווי הסולמית במספרים עוקבים, החל מ-0. מספר תווי הסולמית קובע את מספר הספרות המינימלי בשם, עם אפסים מובילים שנוספים כריפוד.

    • דוגמה: "baseInstanceName": "instance-###"
    • שמות ה-VM שנוצרו: instance-000, ‏ instance-001, ‏ instance-002.
    • כדי להשתמש במספר התחלתי אחר לרצף, מציינים את המספר בסוגריים אחרי תווי הסולמית – לדוגמה, PREFIX-###[100] כמו instance-###[100]. התוצאה היא שמות של מכונות וירטואליות: instance-100,‏ instance-101 ו-instance-102.
  • קידומת בהתאמה אישית: מגדירים את baseInstanceName למחרוזת שלא כוללת תווי סולמית (#). המערכת של Compute Engine משתמשת במחרוזת כקידומת, ומוסיפה מקף וארבעה תווים אקראיים.

    • דוגמה: "baseInstanceName": "my-vm"
    • שמות המכונות הווירטואליות שנוצרו: my-vm-p4k1, my-vm-n2hr.
  • תחילית ברירת המחדל: אם לא מגדירים את baseInstanceName, המערכת של Compute Engine משתמשת בשם של קבוצת ה-MIG בתור התחילית, ומוסיפה מקף וארבעה תווים אקראיים.

    • דוגמה לשם של MIG: my-mig
    • שמות המכונות הווירטואליות שנוצרו: my-mig-xz8d, my-mig-4ran.

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

gcloud

כדי להגדיר שמות של מכונות כשיוצרים MIG, משתמשים בפקודה create עם הדגל --base-instance-name:

  gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --template INSTANCE_TEMPLATE \
      --size SIZE \
      --base-instance-name BASE_INSTANCE_NAME \
      [--region REGION | --zone ZONE]

כדי להגדיר שמות של מכונות בקבוצת MIG קיימת, משתמשים בפקודה update עם הדגל --base-instance-name:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --base-instance-name BASE_INSTANCE_NAME \
    [--region REGION | --zone ZONE]

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

  • ‫INSTANCE_GROUP_NAME: השם של קבוצת המכונות המנוהלת.
  • ‫INSTANCE_TEMPLATE: השם של תבנית של הגדרות מכונה שמשמשת ליצירת מכונות וירטואליות.
  • ‫SIZE: מספר המכונות הווירטואליות ב-MIG.
  • ‫BASE_INSTANCE_NAME: פורמט השם הבסיסי של המכונות שנוצרו ב-MIG:
    • כדי להשתמש בשמות עוקבים, צריך לכלול תו סולמית (#) אחד או יותר בשם – לדוגמה, PREFIX-### כמו instance-###.
    • כדי להשתמש בקידומת מותאמת אישית עם סיומת אקראית, משתמשים בשם שלא כולל תווים של סולמית, למשל my-vm.
  • ‫REGION: בקבוצת MIG אזורית, האזור שבו נמצאת הקבוצה.
  • ‫ZONE: באזור של קבוצת MIG, האזור שבו נמצאת קבוצת ה-MIG.

REST

כדי להגדיר שמות של מכונות כשיוצרים קבוצת MIG, צריך לכלול את השדה baseInstanceName בבקשה ל-method‏ instanceGroupManagers.insert או ל-method‏ regionInstanceGroupManagers.insert.

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

{
  "name": "INSTANCE_GROUP_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE",
  "targetSize": "SIZE",
  "baseInstanceName": "BASE_INSTANCE_NAME"
}

כדי להגדיר שמות של מכונות ב-MIG קיים, צריך לכלול את baseInstanceName בבקשה ל-method‏ instanceGroupManagers.patch או ל-method‏ regionInstanceGroupManagers.patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "baseInstanceName": "BASE_INSTANCE_NAME"
}

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

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: באזור של קבוצת MIG, האזור שבו נמצאת קבוצת ה-MIG.
  • ‫INSTANCE_GROUP_NAME: השם של קבוצת המכונות המנוהלת.
  • ‫INSTANCE_TEMPLATE: השם של תבנית של הגדרות מכונה שמשמשת ליצירת מכונות וירטואליות.
  • ‫SIZE: מספר המכונות הווירטואליות ב-MIG.
  • ‫BASE_INSTANCE_NAME: פורמט השם הבסיסי של המכונות שנוצרו ב-MIG:
    • כדי להשתמש בשמות עוקבים, צריך לכלול תו סולמית (#) אחד או יותר בשם – לדוגמה, PREFIX-### כמו instance-###.
    • כדי להשתמש בקידומת מותאמת אישית עם סיומת אקראית, משתמשים בשם שלא כולל תווים של סולמית, למשל my-vm.

הגדלת מגבלת הגודל של הקבוצה

כברירת מחדל, מגבלת הגודל של קבוצת MIG אזורית היא 1,000 מכונות וירטואליות, ומגבלת הגודל של קבוצת MIG מרובת-אזורים היא 2,000 מכונות וירטואליות. אפשר להגדיל את המגבלות האלה ל-2,000 מכונות וירטואליות בקבוצת MIG אזורית ול-4,000 מכונות וירטואליות בקבוצת MIG מחוזית.

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

המסוף

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

    כניסה לדף Instance groups

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

  3. לוחצים על Edit כדי לשנות את קבוצת המכונות.

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

  5. בקטע Managed instance list API call results, בוחרים באפשרות Paginated.

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

gcloud

לקבוצת MIG קיימת, משתמשים בפקודה update:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --list-managed-instances-results=PAGINATED

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

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --list-managed-instances-results=PAGINATED

Terraform

כדי להגדיל את מגבלת הגודל של קבוצת MIG, מגדירים את הארגומנט list_managed_instances_results לערך PAGINATED.

הדוגמה הבאה מגדילה את מגבלת הגודל של קבוצת MIG אזורית. למידע נוסף על המשאב שנעשה בו שימוש בדוגמה, ראו המשאב google_compute_instance_group_manager. לקבוצת MIG אזורית, משתמשים במשאב google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name                           = "my-igm"
  base_instance_name             = "test"
  target_size                    = 7
  zone                           = "us-central1-f"
  list_managed_instances_results = "PAGINATED"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

לקבוצת MIG אזורית קיימת, משתמשים בשיטה instanceGroupManagers.patch, ולקבוצת MIG של תחום מוגדר משתמשים בשיטה regionInstanceGroupManagers.patch. לדוגמה:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP_NAME

{
  "listManagedInstancesResults": "PAGINATED",
}

לקבוצת MIG חדשה ברמת האזור, משתמשים ב-methodinstanceGroupManagers.insert, ולקבוצת MIG ברמת המחוז משתמשים ב-methodregionInstanceGroupManagers.insert.

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

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