יש כמה בעיות שיכולות למנוע מקבוצת מופעי מכונה מנוהלים (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 אזורי, משתמשים בשיטה
autoscalers.delete. - כדי להגדיר מידרוג אוטומטי של MIG אזורי, משתמשים בשיטה
regionAutoscalers.delete.
אם קבוצת ה-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 אזורי, עדיף להשתמש בMIG אזורי.
- יוצרים כמה קבוצות של מכונות מנוהלות ומפצלים ביניהן את עומס העבודה – לדוגמה, על ידי שינוי ההגדרות של איזון העומסים.
- אם אתם עדיין צריכים קבוצה גדולה יותר, אתם יכולים להגדיל את מגבלת הגודל של ה-MIG או לפנות לתמיכה כדי לשלוח בקשה.
אם אי אפשר למחוק את ה-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
הפתרון:
כדי לפתור את הבעיה תוכלו לנסות אחד מהפתרונות הבאים:
- מוסיפים לפקודה את הדגל המתאים
--regionאו--zone. - הגדרת אזור ותחום כברירת מחדל
המשאב נמצא בשימוש של שירות קצה עורפי
אי אפשר להסיר קבוצת מופעים אם היא נמצאת בשימוש בשירות העורפי של מאזן עומסים. יש להסיר את המופע משירות לקצה העורפי לפני שניתן למחוק את קבוצת המופעים.
הודעת השגיאה:
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
הפתרון:
אופציונלי: מרוקנים את קבוצת השרתים העורפיים.
רק במאזני עומסים של פרוקסי, אפשר להגדיר את הגורם לקביעת הקיבולת לערך
0.0לפני שמסירים את קבוצת המופעים משירות קצה עורפי. אפשר להגדיר את קנה המידה של הקיבולת לאפס באמצעות הפקודהgcloud compute backend-services edit.גם במאזני עומסים של proxy וגם במאזני עומסים של pass-through, אם מפעילים את זמן להשלמת תהליך (connection draining) בשירות לקצה העורפי, מערכת Google Cloud מנסה לאפשר לחיבורים קיימים להימשך, להסתיים ולהתנתק בכל פעם שקבוצת מופעים מוסרת משירות לקצה העורפי.
מסירים את ה-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]
מוחקים את ה-MIG:
gcloud compute instance-groups managed delete INSTANCE_GROUP_NAME
אם קבוצת ה-MIG מנסה שוב ושוב ליצור מחדש מופעים
יכול להיות שהבעיה קשורה למצב הבא.
בדיקות התקינות לא יכולות להגיע למופע
אם הגדרתם מדיניות לתיקון אוטומטי אבל לא הגדרתם את כלל חומת האש שמאפשר לבדיקות התקינות להגיע לאפליקציה שלכם, או שהגדרתם אותו בצורה שגויה, המכונות הווירטואליות יופיעו כלא תקינות, וה-MIG ינסה ליצור אותן מחדש באופן רציף. במאמר דוגמה להגדרת בדיקת תקינות מוסבר איך להגדיר כלל חומת אש לבדיקת תקינות.