הצגת מידע על קבוצות של מכונות מנוהלות (MIG) ועל מופעים מנוהלים

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

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

  • קוראים את המגבלות ויוצרים קבוצה.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי 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 .

הצגת מידע על קבוצות MIG

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

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

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

המסוף

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

    נכנסים לדף Instance groups.

    אם יש לכם קבוצות של מכונות, הן מופיעות בדף, כולל קבוצות MIG וקבוצות לא מנוהלות של מכונות.

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

gcloud

הצגת רשימה של כל קבוצות ה-MIG בפרויקט:

gcloud compute instance-groups managed list

REST

לקבוצות MIG אזוריות, מפעילים את ה-method‏ instanceGroupManagers.list:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

לקבוצות MIG אזוריות, מפעילים את ה-method‏ regionInstanceGroupManagers.list.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers

הצגת המאפיינים של קבוצת MIG

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

כדי לראות את הערך של id בקבוצה, צריך להשתמש ב-CLI של gcloud או ב-Compute Engine API.

המסוף

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

    נכנסים לדף Instance groups.

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

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

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

gcloud

כדי לקבל מידע על קבוצה ספציפית:

gcloud compute instance-groups managed describe instance-group \
    [--zone zone | --region region]

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

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

gcloud compute instance-groups managed describe instance-group --format="(autoscaler)"

REST

לקבוצת MIG אזורית, מפעילים את ה-method‏ instanceGroupManagers.get. לקבוצות MIG אזוריות, מפעילים את ה-method‏ regionInstanceGroupManagers.get.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

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

מדיניות התאמה אוטומטית לעומס (autoscaling)

אם לקבוצה מצורף מגדיר קנה מידה אוטומטי, המשאב של מגדיר קנה המידה האוטומטי מופיע בשדה status.autoscaler של הקבוצה.

כדי לקבל מידע על ההתאמה האוטומטית של קבוצת המכונות, מפעילים את השיטה autoscalers.get לקבוצת מכונות מנוהלת אזורית או את השיטה regionAutoscalers.get לקבוצת מכונות מנוהלת אזורית. כתובת ה-URL של משאב ההתאמה האוטומטית לעומס כוללת את השם שלו, שהוא כברירת מחדל השם של הקבוצה שאליה מצורפת ההתאמה האוטומטית לעומס. לדוגמה, אפשר לשלוח את הבקשה הבאה ל-autoscaler של קבוצת MIG אזורית:

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/mig_name

בדיקה אם קבוצת MIG יציבה

קבוצת MIG נחשבת יציבה כשאין מכונות שעוברות שינויים או מתוזמנות לשינויים, וכשקבוצת ה-MIG עצמה לא משתנה.

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

כדי לוודא שכל המכונות בקבוצת מופעי מכונה מנוהלים פועלות ותקינות, בודקים את הערך בשדה status.isStable של הקבוצה.

gcloud

משתמשים בפקודה describe:

gcloud compute instance-groups managed describe instance-group-name \
    [--zone zone | --region region]

ה-CLI של gcloud מחזיר מידע מפורט על קבוצת ה-MIG, כולל השדה status.isStable.

כדי להשהות סקריפט עד שה-MIG יהיה יציב, משתמשים בפקודה wait-until עם הדגל --stable. לדוגמה:

gcloud compute instance-groups managed wait-until instance-group-name \
    --stable \
    [--zone zone | --region region]
Waiting for group to become stable, current operations: deleting: 4
Waiting for group to become stable, current operations: deleting: 4
...
Group is stable

הפקודה חוזרת אחרי ש-status.isStable מוגדר ל-true עבור ה-MIG.

REST

בקבוצת MIG אזורית, שולחים בקשת GET ל-method‏ instanceGroupManagers.get:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/get

בקבוצה אזורית של מופעי מכונה מנוהלים, מחליפים את zones/zone ב-regions/region:

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/get

הבקשות האלה מחזירות מידע מפורט על ה-MIG כולל השדה status.isStable.

אם הערך של status.isStable הוא false, סימן שהשינויים פעילים, בהמתנה או שקבוצת ה-MIG עצמה משתנה.

הערך true בשדה status.isStable מציין את הדברים הבאים:

  • אף אחד מהמופעים ב-MIG לא עובר שינוי כלשהו, והערך של currentAction בכל המופעים הוא NONE.
  • אין שינויים בהמתנה למכונות ב-MIG.
  • ה-MIG עצמו לא משתנה.

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

ברגע שכל הפעולות מסתיימות, הערך של status.isStable מוגדר שוב כ-true בקבוצת ה-MIG הזו.

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

בדיקת הגדרת התיקון ב-MIG

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

המסוף

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

    כניסה לדף Instance groups

  2. לוחצים על השם של קבוצת המכונות שרוצים לראות. ייפתח דף עם המאפיינים של ה-MIG ורשימה של המכונות הווירטואליות שבקבוצה.
  3. לוחצים על הכרטיסייה פרטים.
  4. בקטע VM instance lifecycle, בודקים את הערכים של השדות הבאים:

    • Default action on failure: אם הערך הוא No action, התיקונים האוטומטיים של מכונות וירטואליות שנכשלו מושבתים.

    • אם בדיקת התקינות נכשלת:

      • אם הערך הוא No action, תיקון התוכנה האוטומטי מושבת.
      • אם הערך הוא Default action והערך של השדה Default action on failure הוא No action, גם אז תיקון התוכנה האוטומטי מושבת.
    • Change zone during VM instance repair: אם בוחרים באפשרות הזו, כשאי אפשר לתקן מכונה וירטואלית באזור המקורי, ה-MIG מתקן אותה באחד מהאזורים האחרים שנבחרו.

gcloud

משתמשים בשיטה describe באופן הבא:

gcloud compute instance-groups managed describe instance-group \
    --format="(instanceLifecyclePolicy)" \
    --zone=zone

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

  • ‫instance-group: השם של קבוצת המכונות המנוהלת.
  • ‫zone: לאזור של קבוצת MIG, מציינים את האזור. בשביל קבוצת MIG אזורית, משתמשים בדגל --region=region.

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

  • ‫defaultActionOnFailure: אם הערך הוא DO_NOTHING, התיקונים האוטומטיים של מכונות וירטואליות שנכשלו מושבתים.
  • ‫onFailedHealthCheck: אם הערך הוא אחד מהבאים, תיקון התוכנה האוטומטי מושבת.
    • ‫DEFAULT_ACTION, בתנאי שהערך של השדה defaultActionOnFailure הוא DO_NOTHING
    • DO_NOTHING
  • ‫allowChangingZone: אם הערך הוא YES וכשקבוצת ה-MIG לא יכולה לתקן מכונה וירטואלית באזור המקורי, קבוצת ה-MIG מתקנת את המכונה הווירטואלית באחד מהאזורים האחרים שנבחרו בקבוצת ה-MIG.

הדוגמה הבאה היא של פלט שמתקבל כשתיקונים של מכונות וירטואליות שנכשלו ולא תקינות מושבתים ב-MIG:

  instanceLifecyclePolicy:
    defaultActionOnFailure: DO_NOTHING
    forceUpdateOnRepair: NO
    onFailedHealthCheck: DEFAULT_ACTION
    onRepair:
      allowChangingZone: YES

REST

לקבוצת MIG אזורית, משתמשים בשיטה instanceGroupManagers.get, ולקבוצת MIG אזורית משתמשים בשיטה regionInstanceGroupManagers.get.

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

GET https://compute.googleapis.com/compute/v1/projects/project_ID/zones/zone/instanceGroupManagers/instance_group

בגוף התגובה, בודקים את הערכים של השדות הבאים:

  • ‫defaultActionOnFailure: אם הערך הוא DO_NOTHING, התיקונים האוטומטיים של מכונות וירטואליות שנכשלו מושבתים.
  • ‫onFailedHealthCheck: אם הערך הוא אחד מהבאים, תיקון התוכנה האוטומטי מושבת.
    • ‫DEFAULT_ACTION, בתנאי שהערך של השדה defaultActionOnFailure הוא DO_NOTHING
    • DO_NOTHING
  • ‫allowChangingZone: אם הערך הוא YES וכשקבוצת ה-MIG לא יכולה לתקן מכונה וירטואלית באזור המקורי, קבוצת ה-MIG מתקנת את המכונה הווירטואלית באחד מהאזורים האחרים שנבחרו בקבוצת ה-MIG.

הדוגמה הבאה היא של פלט שמתקבל כשתיקונים של מכונות וירטואליות שנכשלו או לא תקינות מושבתים ב-MIG:

...
"instanceLifecyclePolicy": {
  "forceUpdateOnRepair": "NO",
  "defaultActionOnFailure": "DO_NOTHING",
  "onFailedHealthCheck": "DEFAULT_ACTION",
  "onRepair": {
    "allowChangingZone": "YES"
  }
}
...

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

הצגת פעולות היסטוריות של תיקון תוכנה אוטומטי (autohealing)

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

מעקב אחרי עדכונים בהדרגה (rolling)

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

הצגת ההגדרה של שמירת המצב

אם הגדרתם קבוצת MIG עם שמירת מצב ואתם רוצים לבדוק את ההגדרות, קראו את המאמר הצגת הגדרות עם שמירת מצב.

הצגת התפלגות המופעים

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

הצגת הסטטוס של פרוסת TPU

כשיוצרים קבוצת MIG עם מכונות וירטואליות של TPU או מגדילים את קבוצת ה-MIG, קבוצת ה-MIG יוצרת מכונות וירטואליות של TPU במצב PENDING. כשהקיבולת תהיה זמינה ותתאים להגדרות המדיניות של עומס העבודה, המכונות הווירטואליות יעברו לסטטוסים PROVISIONING ו-STAGING לפני שיגיעו לסטטוס RUNNING. המעבר הזה יכול לקחת זמן, בהתאם למספר המכונות בקבוצה.

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

כדי לראות את השדות currentInstanceStatuses ו-appliedAcceleratorTopologies, אפשר להשתמש באחת מהאפשרויות הבאות:

המסוף

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

    כניסה לדף Instance groups

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

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

gcloud

כדי לראות את הסטטוס של פרוסת TPU, משתמשים בפקודה gcloud compute instance-groups managed describe. בפלט, מחפשים את השדות currentInstanceStatuses ו-acceleratorTopologyState.

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

    gcloud compute instance-groups managed describe MIG_NAME \
        --zone=ZONE
    
  • לקבוצת MIG אזורית, מריצים את הפקודה הבאה:

    gcloud compute instance-groups managed describe MIG_NAME \
        --region=REGION
    

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

  • ‫MIG_NAME: השם של ה-MIG.
  • ‫ZONE: האזור שבו נמצאת קבוצת ה-MIG.
  • ‫REGION: האזור שבו נמצאת קבוצת ה-MIG.

REST

כדי לראות את הסטטוס של פרוסת TPU, שולחים בקשת GET באחת מהשיטות הבאות:

  • כדי להשתמש ב-MIG אזורי, משתמשים בשיטה instanceGroupManagers.get באופן הבא:

    GET https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/instanceGroupManagers/<var>MIG_NAME</var>
    
  • לקבוצות MIG אזוריות, משתמשים ב-method ‏regionInstanceGroupManagers.get.

    GET https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/regions/<var>REGION</var>/instanceGroupManagers/<var>MIG_NAME</var>
    

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

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

פלט לדוגמה

הפלט אמור להיראות כך:

  {
    ...
    "name": "example-mig",
    ...
    "currentActions": {
      "none": 0,
      "creating": 2,
      "creatingWithoutRetries": 0,
      "verifying": 0,
      "recreating": 0,
      "deleting": 0,
      "abandoning": 0,
      "restarting": 0,
      "refreshing": 0,
      "suspending": 0,
      "resuming": 0,
      "stopping": 0,
      "starting": 0
    },
    ...
      "bulkInstanceOperation": {
        "inProgress": true,
        "lastProgressCheck": {
          "error": {
            "errors": [
              {
                "code": "ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS",
                "message": "Waiting for resources. Currently there are not enough resources available to fulfill the request."
              }
            ]
          },
          "timestamp": "2026-03-18T18:35:32.720925Z"
        }
      },
      "appliedAcceleratorTopologies": [
        {
          "state": "ACTIVATING"
        }
      ],
      "currentInstanceStatuses": {
        "pending": 2
      },
    "targetSize": 2,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    ...
  }
  

אם בשדה bulkInstanceOperation.lastProgressCheck.error מדווחת השגיאה ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS, סימן שאין מספיק משאבי TPU זמינים באזור כדי ליצור את הפרוסה, וה-MIG ממתין שמשאבים יהיו זמינים.

מצבי טופולוגיה של מאיצים

השדה acceleratorTopologyState מציין את הסטטוס הנוכחי של פרוסת ה-TPU. הוא יכול לקבל את הערכים הבאים:

מדינה תיאור
INCOMPLETE הפרוסה עדיין לא נוצרה. גודל היעד של ה-MIG הוא 0.
ACTIVATING הפרוסה נוצרת. קבוצת ה-MIG מקצה את המכונות ומפעילה את הקישוריות בין הצ'יפים (ICI). גודל היעד של ה-MIG שווה לגודל הפרוסה.
ACTIVE הפרוסה פועלת באופן מלא. לקבוצת ה-MIG יש את מספר המכונות הנדרש במצב RUNNING.
REACTIVATING הפרוסה נכשלה בגלל בעיה במארח או בחיבור בין השבבים (ICI). ‫Compute Engine מנסה להפעיל מחדש את הטופולוגיה של המאיץ. גודל היעד של ה-MIG שווה לגודל הפרוסה וכל המכונות נמצאות במצב REPAIRING. למידע נוסף על התאוששות מכשל, ראו זמינות פרוסות והתאוששות מכשל.
DEACTIVATING הפרוסה מתעוותת כי Compute Engine מבטל את ההקצאה של המכונות. גודל היעד של MIG מוגדר כ-0, ולפחות מכונה אחת נמצאת במצב STOPPING, STOPPED או TERMINATED.
FAILED

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

  • כל ההזמנות במצב "קיבולת":
    • כשל במארח. במקרה כזה, המכונה המושפעת נכנסת למצב REPAIRING.
    • כשל ב-ICI. במקרה כזה, המכונות נשארות במצב RUNNING.
  • על פי דרישה, התחלה גמישה, Spot ומקומות שמורים (לא כולל מקומות שמורים במצב All Capacity):
    • מחיקה או עצירה ידנית של מכונה, כולל מתוך מערכת ההפעלה.
    • הפקעה של VM במודל Spot.

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

  • מוחקים את ה-MIG ויוצרים אותו מחדש.
  • משנים את הגודל של ה-MIG ל-0, ואז מגדילים אותו לגודל הנדרש.

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

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

הצגת רשימה של המכונות המנוהלות ב-MIG

כדי להציג רשימה של המכונות המנוהלות בקבוצה, כולל המצבים והתבניות שלהן, משתמשים במסוף, ב-ה-CLI של gcloud או ב-REST.

המסוף

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

    נכנסים לדף Instance groups.

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

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

gcloud

משתמשים בפקודת המשנה list-instances של ה-CLI של gcloud.

gcloud compute instance-groups managed list-instances instance-group \
    [--zone zone | --region region]

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

הפלט לדוגמה:

NAME: example-mig-cmx0
ZONE: us-central1-a
STATUS: RUNNING
HEALTH_STATE:
ACTION: NONE
INSTANCE_TEMPLATE: example-instance-template
VERSION_NAME:
LAST_ERROR:

NAME: example-mig-qdwq
ZONE: us-central1-b
STATUS: PENDING
HEALTH_STATE:
ACTION: CREATING
INSTANCE_TEMPLATE: example-instance-template
VERSION_NAME:
LAST_ERROR: Error ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS: Waiting for resources. Currently there are not enough resources available to fulfill the request.
...

אם המכונות נמצאות במצב PENDING עם השגיאה ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS, סימן שהן ממתינות להקצאת משאבים.

REST

בקבוצת MIG אזורית, שולחים בקשת GET ל-method‏ instanceGroupManagers.listManagedInstances וכוללים את שם קבוצת ה-MIG:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

בקבוצת MIG אזורית (עם כמה אזורים), משתמשים ב-method ‏regionInstanceGroupManagers.listManagedInstances.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

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

זוהי דוגמה לתשובה:

{
  "managedInstances": [
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-cmx0",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "2605978238927153426",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-instance-template"
      },
      "name": "example-mig-cmx0"
    },
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-b/instances/example-mig-qdwq",
      "instanceStatus": "PENDING",
      "currentAction": "CREATING",
      "lastAttempt": {
        "errors": {
          "errors": [
            {
              "code": "ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS",
              "message": "Waiting for resources. Currently there are not enough resources available to fulfill the request."
            }
          ]
        }
      }
      "id": "334721596325800210",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-instance-template"
      },

      "name": "example-mig-qdwq"
    }
  ]
}

אם המכונות נמצאות במצב PENDING עם השגיאה ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS, סימן שהן ממתינות להקצאת משאבים.

בדיקת הסטטוס של מכונות מנוהלות

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

כדי לראות פרטים על מכונות ב-MIG, כולל הסטטוס שלהן וכל הפעולות הנוכחיות שמבוצעות על ידי הקבוצה, צריך להשתמש ב-Google Cloud CLI או ב-REST.

gcloud

כל המופעים המנוהלים

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

gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
    [--zone=ZONE | --region=REGION]

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

NAME: vm-instances-9pk4
ZONE: us-central1-f
STATUS:
HEALTH_STATE:
ACTION: CREATING
INSTANCE_TEMPLATE: my-new-template
VERSION_NAME:
LAST_ERROR:

NAME: vm-instances-h2r1
ZONE: us-central1-f
STATUS: STOPPING
HEALTH_STATE:
ACTION: DELETING
INSTANCE_TEMPLATE: my-old-template
VERSION_NAME:
LAST_ERROR:

העמודה HEALTH_STATE תופיע ריקה, אלא אם הגדרתם בדיקת תקינות.

מכונה מנוהלת ספציפית

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

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

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

currentAction: NONE
id: '6789072894767812345'
instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41
instanceStatus: RUNNING
name: example-mig-hz41
preservedStateFromConfig:
  metadata:
    example-key: example-value
preservedStateFromPolicy:
  disks:
    persistent-disk-0:
      autoDelete: NEVER
      mode: READ_WRITE
      source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41
version:
  instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template

REST

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

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

הקריאה מחזירה רשימה של מכונות ל-MIG, כולל instanceStatus ו-currentAction של כל מכונה.

{
  "managedInstances": [
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp",
      "instanceStatus": "RUNNING",
      "currentAction": "REFRESHING",
      "id": "5317605642920955957",
      "version": {
        instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template"
      },
      "name": "vm-instances-prvp"
    },
    {
      "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5",
      "instanceStatus": "RUNNING",
      "currentAction": "REFRESHING",
      "id": "2800161036826218547",
      "version": {
        "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template"
      },
      "name": "vm-instances-w2t5"
    }
  ]
}

אם מגדירים בדיקת תקינות, התשובה כוללת גם את השדה instanceHealth.

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

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

הערכים האפשריים של currentAction הם:

  • ‫ABANDONING. המכונה מוסרת מה-MIG.
  • ‫CREATING. המכונה בתהליך יצירה.
  • ‫CREATING_WITHOUT_RETRIES. המכונה נוצרת בלי ניסיונות חוזרים. אם המכונה לא נוצרת בניסיון הראשון, קבוצת ה-MIG לא מנסה להחליף את המכונה שוב.
  • ‫DELETING. המכונה בתהליך מחיקה.
  • ‫RECREATING. המכונה מוחלפת.
  • ‫REFRESHING. המכונה מוסרת ממאגרי היעד הנוכחיים שלה ומתווספת מחדש לרשימת מאגרי היעד הנוכחיים (הרשימה הזו עשויה להיות זהה למאגרי היעד הקיימים או שונה מהם).
  • ‫RESTARTING. המכונה בתהליך הפעלה מחדש באמצעות השיטות stop ו-start.
  • ‫RESUMING. המכונה בתהליך של המשך פעולה אחרי השעיה.
  • ‫STARTING. המכונה בתהליך הפעלה אחרי שהיא הופסקה.
  • STOPPING. המכונה נעצרת.
  • ‫SUSPENDING. המכונה מושעית.
  • VERIFYING. המכונה נוצרה והיא בתהליך אימות.
  • NONE. לא מתבצעות פעולות במכונה.

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

בדיקת מצבי התקינות

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

רשימת שגיאות במכונות

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

כדי להציג את רשימת השגיאות, אפשר להשתמש במסוף Google Cloud , ב-CLI של gcloud או ב-REST.

המסוף

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

    כניסה לדף Instance groups

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

  3. לוחצים על שגיאות.

gcloud

משתמשים בפקודה instance-groups managed list-errors כדי להציג את רשימת השגיאות האחרונות בקבוצה.

gcloud compute instance-groups managed list-errors instance-group-name \
    [--zone zone | --region region]

לדוגמה:

gcloud compute instance-groups managed list-errors example-group \
    --region us-west1
INSTANCE_URL                                                                                        ACTION    ERROR_CODE      ERROR_MESSAGE                                                                                     TIMESTAMP                      INSTANCE_TEMPLATE                                                                                                            VERSION_NAME

https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-v0hl  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-v0hl' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.156-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-qp3d  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-qp3d' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.081-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
...

REST

יוצרים בקשת GET ל-method‏ listErrors בשביל MIG אזורי או MIG של אזור.

לדוגמה:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100

התגובה לבקשה תיראה בערך כך:

{
 "items": [
  {
   "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Instance 'example-mig-m1sz' creation failed: Quota 'CPUS' exceeded.  Limit: 50.0 in zone us-central1-c."
   },
   "timestamp": "2019-01-03T18:47:28.457-08:00",
   "instanceDetails" : {
    "instance": "zones/us-central1-c/instances/example-mig-m1sz",
    "action": "CREATING",
    "version": {
     "name": "example-version-name",
     "instanceTemplate": "global/instanceTemplates/example-template",
    }
   }
  }
 ],
 ...
 "nextPageToken": "Ch0yMDE5LTA3LTI5VDExOjA4OjA2LjYxMi0wNzowMBJ5aHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY29tcHV0ZS9zdGFnaW5nX2FscGhhL3Byb2plY3RzL215cnpha2VyZXltcy1zdGFnaW5nL3pvbmVzL3VzLWNlbnRyYWwxLWlyMS9pbnN0YW5jZXMvaWdtLTEtcXAzZA=="
}

‫listErrors API תומך בעימוד רשימות. כדי לקבל את דף התוצאות הבא, משתמשים בשדה nextPageToken מתגובה אחת בבקשה הבאה. לדוגמה: GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/listErrors&maxResults=100&nextPageToken=next-page-token, כאשר מחליפים את next-page-token בטוקן שהתקבל מהתגובה הקודמת.

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

  • אי אפשר ליצור מופע חדש בגלל:
    • חוסר זמינות של קיבולת שניתנת להפסקה לפני הזמן.
    • מכסה לא מספיקה, למשל למעבדים (CPU) באזור מסוים.
    • הגעתם למספר המקסימלי של מכונות וירטואליות ברשת שמשויכת לקבוצה.
    • קובץ האימג' שצוין בשדה properties.disks[].initializeParams.sourceImage של תבנית המכונה נמחק, או שההרשאות שלו השתנו.
    • כרטיס האשראי בחשבון לחיוב שמשויך לפרויקט דחה את התשלום.
  • אי אפשר למחוק מופע קיים כי:
    • לחשבון השירות שמשמש את הקבוצה אין את ההרשאה compute.instances.delete.
    • נשלחו יותר מדי בקשות למחיקה בו-זמנית, והייתה חריגה ממגבלות הקצב.
  • אי אפשר להוסיף מכונה למאגר יעד כי מאגר היעד נמחק.

אחרי שבודקים את השגיאות האלה, אפשר לפתור אותן. לדוגמה:

  • להעביר את עומס העבודה לאזור אחר שיש בו קיבולת של מכונות VM שניתנות להפסקה לפני הזמן.
  • לבקש להגדיל את המכסה באזור מסוים.
  • מוסיפים את ההרשאה compute.instances.delete לחשבון השירות שמשמש את הקבוצה.

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

‫Compute Engine שומר את 500 השגיאות האחרונות מ-8 הימים האחרונים, גם אם המכונות הבסיסיות כבר לא קיימות או שלא ניתן היה ליצור אותן.

איך בודקים אם מכונה וירטואלית היא חלק מ-MIG

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

המסוף

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

    כניסה לדף VM instances

  2. לוחצים על מכונה כדי לגשת לדף VM instance details שלה.
  3. אם המכונה הווירטואלית שייכת ל-MIG, השם של ה-MIG יופיע בכותרת In use by. אם המכונה הווירטואלית לא שייכת לקבוצה, הכותרת In use by לא מופיעה בדף הפרטים של המכונה.

REST

איך רואים את המפנים למכונות וירטואליות

לחלופין, כדי לזהות אם מכונה וירטואלית היא או הייתה חברה ב-MIG, חפשו את שני מפתחות המטא-נתונים האלה במטא-נתונים של המכונה:

  • ‫instance-template מציין את התבנית שממנה נוצרה המכונה הווירטואלית.
  • ‫created-by מציין את קבוצת ה-MIG שיצרה את המכונה הווירטואלית.

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

לדוגמה, אם יש מכונה וירטואלית בשם random-instance-biy ואתם רוצים לדעת אם היא נוצרה על ידי קבוצת MIG, אתם יכולים לתאר את המכונה ולחפש את מפתחות המטא-נתונים. לדוגמה:

gcloud compute instances describe random-instance-biy \
    --zone us-central1-f

ה-CLI של gcloud מחזיר תשובה שדומה לזו:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

הצגת המצב השמור של מכונה מנוהלת

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

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