פתרון בעיות בקבוצות של מופעי מכונה מנוהלים

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

אם נוצרים יומנים עבור קבוצת MIG שנמחקה

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

מידרוג אוטומטי מצורף עדיין קיים

אם מחקתם קבוצת MIG באמצעות Compute Engine API ולא שלחתם בקשה נפרדת למחיקת המידרוג האוטומטי המצורף, יכול להיות שיוצגו ב-Logs Explorer יומנים עם ההודעה הבאה.

The resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/DELETED_INSTANCE_GROUP_NAME' was not found.

הפתרון:

כדי לפתור את הבעיה, צריך למחוק את המידרוג האוטומטי המצורף באמצעות רכיבי ה-method של Compute Engine API:

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

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

דיסק האתחול כבר קיים

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

תבנית המופע לא תקינה

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

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

חריגה מהמגבלה לסוג המשאב

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

הודעת השגיאה:

ERROR: (gcloud.compute.<INSTANCE_GROUP_TYPE>.<METHOD>) Could not
fetch resource:

 - Exceeded limit 'MAX_INSTANCES_IN_INSTANCE_GROUP' on resource 'PROJECT_ID'.
 Limit: NUMBER

הפתרון:

כדי לפתור את הבעיה תוכלו לנסות אחד מהפתרונות הבאים:

אם אי אפשר למחוק את ה-MIG או את המופעים שלו

יכול להיות שהבעיה קשורה למצב הבא.

המשאב לא נמצא באזור או באזור הזמינות

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

הודעת השגיאה:

  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME' was not found
    
  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The resource 'projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME' was not found
    

הפתרון:

כדי לפתור את הבעיה תוכלו לנסות אחד מהפתרונות הבאים:

המשאב נמצא בשימוש של שירות קצה עורפי

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

הודעת השגיאה:

  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The instance_group_manager resource 'projects/PROJECT/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME is already being used by 'projects/PROJECT/global/backendServices/BACKEND_SERVICE
  • ERROR: (gcloud.compute.instance-groups.managed.delete) Some requests did not succeed:
    ‐ The instance_group_manager resource 'projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME is already being used by 'projects/PROJECT/global/backendServices/BACKEND_SERVICE

הפתרון:

  1. אופציונלי: מרוקנים את קבוצת השרתים העורפיים.

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

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

      gcloud compute backend-services remove-backend BACKEND_SERVICE \
          --instance-group=INSTANCE_GROUP_NAME \
          --instance-group-zone=ZONE \
          [--region=REGION | --global]
      
    • כדי ליצור קבוצת MIG אזורית, מריצים את הפקודה הבאה:

      gcloud compute backend-services remove-backend BACKEND_SERVICE  \
          --instance-group=INSTANCE_GROUP_NAME \
          --instance-group-region=REGION \
          [--region=REGION | --global]
      
  3. מוחקים את ה-MIG:

    gcloud compute instance-groups managed delete INSTANCE_GROUP_NAME
    

אם קבוצת ה-MIG מנסה שוב ושוב ליצור מחדש מופעים

יכול להיות שהבעיה קשורה למצב הבא.

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

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