ניהול מחזור החיים של מכונת ה-VM

במאמר הזה מוסבר איך לבדוק את סטטוס המערכת של מכונה וירטואלית (VM) במהלך מחזור החיים שלה ב-Google Distributed Cloud (GDC)‎ עם air gap.

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

המסמך הזה מיועד למפתחים בקבוצות של אדמינים בפלטפורמה או של מפעילי אפליקציות, שבודקים את סטטוס המערכת של מכונות וירטואליות בסביבת Distributed Cloud. מידע נוסף מופיע במאמר קהלים למסמכי תיעוד של GDC עם air gap.

הגדרות הסטטוס של המכונה הווירטואלית

מדינה הגדרה
Pending המכונה הווירטואלית אושרה על ידי המערכת וממתינה להקצאה.
Provisioning משאבים שמשויכים למכונה הווירטואלית, כמו VirtualMachineDisk, מוקצים ומוכנים לשימוש.
Starting המכונה הווירטואלית מתכוננת להפעלה.
Running המכונה הווירטואלית פועלת.
Stopping המכונה הווירטואלית בתהליך עצירה.
Stopped המכונה הווירטואלית נעצרה ולא צפויה להתחיל לפעול.
Paused המכונה הווירטואלית מושהית ונמצאת במצב קפוא, שנשמר. אין גישה למכונה הווירטואלית.
Terminating המכונה הווירטואלית והמשאבים שמשויכים אליה נמצאים בתהליך מחיקה.
ErrorConfiguration יש שגיאה בהגדרות של המכונה הווירטואלית. מצבי ההגדרה הלא תקינים יכולים להיגרם מהסיבות הבאות:
‫MachineTypeNotFound – סוג המכונה הווירטואלית שאליו מתייחסת המכונה הווירטואלית לא נמצא או שהוא נמחק.
‫MachineDiskMisconfig – הדיסק של ה-VM לא מוגדר נכון.
‫InterfaceCreationFailed – יצירת ממשק הרשת נכשלה.
CrashLoopBackOff המכונה הווירטואלית נמצאת בלולאת קריסה וממתינה לניסיון חוזר.
PendingIPAllocation המכונה הווירטואלית ממתינה שהמערכת תקצה לה כתובת IP.
Unknown אי אפשר לקבל את מצב המכונה הווירטואלית, בדרך כלל בגלל שגיאה בתקשורת עם המארח שבו היא פועלת.
ErrorUnschedulable אירעה שגיאה במהלך תזמון המכונה הווירטואלית, למשל בגלל בקשות למשאבים או אילוצי תזמון שלא ניתן למלא או לתמוך בהם.
DiskError יש שגיאה במכונה הווירטואלית באחד או יותר מהדיסקים המצורפים.
WaitingForDisk המכונה הווירטואלית ממתינה עד שאחד או יותר מה-VirtualMachineDisk המצורפים יהיו מוכנים.
CrashLoopBackoff המכונה הווירטואלית קורסת באופן עקבי מסיבה כלשהי.

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

כדי להשתמש בפקודות של ממשק שורת הפקודה (CLI) של gdcloud, צריך לוודא שהורדתם, התקנתם והגדרתם את ה-CLI של gdcloud. כל הפקודות של Distributed Cloud משתמשות ב-CLI של gdcloud או kubectl, ודורשות סביבה של מערכת הפעלה (OS).

קבלת נתיב הקובץ של kubeconfig

כדי להריץ פקודות בשרת Management API, צריך לוודא שיש לכם את המשאבים הבאים:

  1. אם אין לכם קובץ kubeconfig לשרת Management API, נכנסים לחשבון ויוצרים אותו.

  2. בהוראות הבאות, מחליפים את MANAGEMENT_API_SERVER בנתיב לקובץ kubeconfig של שרת Management API.

בקשת תפקידים ב-IAM

פנו לאדמין של הפרויקט ב-IAM ובקשו ממנו להקצות לכם את התפקידים הבאים בפרויקט:

  • אדמין של פרויקט מכונות וירטואליות (project-vm-admin): יצירה, שינוי, הצגה ומחיקה של מכונות וירטואליות במרחב השמות של הפרויקט.

  • צפייה בפרויקט(project-viewer): צפייה בכל המשאבים במרחבי השמות של הפרויקט.

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

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

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

  • אם יש בעיות במכונה הווירטואלית.
  • כדי לוודא שהמכונה הווירטואלית פועלת אחרי שהיא הופעלה.
  • כדי לוודא שהמכונה הווירטואלית נמצאת במצב Paused או Stopped.

הצגת רשימה של מכונות וירטואליות כדי לבדוק את הסטטוס שלהן

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

  1. מציגים את כל המכונות הווירטואליות ואת הסטטוס של כל אחת מהן:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog
    

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

    משתנההגדרה
    MANAGEMENT_API_SERVER קובץ kubeconfig של שרת Management API.
    PROJECT הפרויקט ב-GDC שבו נמצא ה-VM.

    פלט לדוגמה:

    NAME          STATUS                    AGE
    vm-1          Running                    1d
    vm-2          Stopped                    8d
    vm-3          ErrorConfiguration         1d
    
  2. כדי לקבל פרטים נוספים על סטטוס של מכונה וירטואלית מסוימת:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog VM_NAME \
      -o jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'
    

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

    • ‫MANAGEMENT_API_SERVER עם קובץ kubeconfig של שרת Management API שקיבלתם מהפקודה gdcloud auth login.
    • ‫VM_NAME בשם של המכונה הווירטואלית החדשה.
    • ‫PROJECT בפרויקט ב-GDC שבו נמצאת ה-VM.

    פלט לדוגמה שבו מוצגים הערכים Reason ו-Message:

    State: ErrorConfiguration
    Reason: MachineDiskNotFound
    Message: VirtualMachineDisk disk-1 in namespace project-1 does not exist.
    

    יכול להיות שגם השדות Reason ו-Message יהיו ריקים. זה אומר שלמערכת לא היה מה לדווח לגביהם.

    פלט לדוגמה עם Reason ו-Message ריקים:

    State: Running
    Reason:
    Message:
    

עצירה או הפעלה מחדש של מכונה וירטואלית

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