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

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

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

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

הקובץ המצורף של הכלי לשינוי גודל אוטומטי עדיין קיים

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

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

הפתרון:

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

  • כדי להשתמש בשיטה autoscalers.delete עבור קבוצת MIG עם שינוי גודל אוטומטי אזורי.
  • כדי להשתמש בשיטה regionAutoscalers.delete עבור קבוצת MIG עם שינוי גודל אוטומטי אזורי.

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

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

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

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

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

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

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

אם קבוצת ה-MIG שלכם לא מחולקת באופן שווה בין האזורים או אם היא משתמשת בסוגי מכונות לא צפויים

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

כדי לעקוב אחרי חלוקת המופעים בזמן הריצה של קבוצת ה-MIG, אפשר להשתמש בלוח הבקרה GCE MIG Instance Distribution Monitoring ב-Cloud Monitoring. שימו לב: לוח הבקרה הזה הוא כלי לבדיקת התפלגות המופעים. הוא לא מזהה את הסיבות הבסיסיות לבעיות ביצירה או למגבלות קיבולת. מידע נוסף על לוח הבקרה זמין במאמר מעקב אחרי הפצת מופעים בקבוצות של מופעים מנוהלים.