עריכת הגדרת מכונה וירטואלית ב-VM Runtime ב-GDC

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

אפשר לעדכן כל שדה בקטע spec של משאב VirtualMachine ולשנות תוויות של מכונות וירטואליות, אבל אי אפשר לשנות שדות אחרים, כמו השם של המכונה הווירטואלית (metadata.name). כברירת מחדל, כדי לערוך מכונה וירטואלית היא צריכה להיות במצב Stopped. אתם יכולים להגדיר שהמכונה הווירטואלית תופעל מחדש באופן אוטומטי כשההגדרות שלה משתנות.

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

כדי להשלים את המשימות שבמסמך הזה, אתם צריכים גישה למשאבים הבאים:

עריכת משאבי המחשוב

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

  1. עוצרים את ה-VM שרוצים לערוך:

    kubectl virt stop VM_NAME
    

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

  2. משתמשים ב-kubectl כדי לערוך את המכונה הווירטואלית:

    kubectl edit gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שרוצים לערוך.

  3. בעורך, מעדכנים את הערכים של משאבי המחשוב שרוצים לשנות.

    לדוגמה, במניפסט VirtualMachine הבא אפשר לראות שלמשאב ה-VM מוקצים 2 מעבדי vCPU:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 2
    ...
    

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

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 4
    ...
    
  4. שומרים וסוגרים את המניפסט של ה-VM.

  5. מפעילים את ה-VM שערכתם:

    kubectl virt start VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

  6. בודקים את ה-STATUS של ה-VM:

    kubectl get gvm VM_NAME
    

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

    בפלט לדוגמה הבא מוצג ה-VM במצב Running:

    NAME   STATUS    AGE   IP
    vm1    Running   1m    192.168.2.72
    
  7. כדי להציג מידע מפורט על מכונה וירטואלית באמצעות kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

    הפלט לדוגמה הבא מציג את המידע המרוכז של VM, עם שינוי במספר יחידות ה-vCPU שהוחל בהצלחה:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
        Cpu:
          Vcpus:  4
    ...
    

מידע נוסף זמין במאמר יצירת מכונות וירטואליות עם הגדרות ספציפיות של vCPU וזיכרון.

עריכת משאבי דיסק

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

  1. עוצרים את ה-VM שרוצים לערוך:

    kubectl virt stop VM_NAME
    

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

  2. משתמשים ב-kubectl כדי לערוך את המכונה הווירטואלית:

    kubectl edit gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שרוצים לערוך.

  3. בעורך, מעדכנים את הקטע spec.disks כדי לצרף או לנתק דיסקים.

    לדוגמה, במניפסט VirtualMachine הבא מוצג שרק דיסק אתחול מצורף ל-VM:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
      ...
    

    אם רוצים להוסיף דיסק ריק קיים, מעדכנים את הגדרות הדיסק בכלי העריכה, כמו בדוגמה הבאה:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
        - virtualMachineDiskName: DISK_NAME
      ...
    

    מחליפים את DISK_NAME בשם של הדיסק שרוצים לצרף.

  4. שומרים וסוגרים את המניפסט של ה-VM.

  5. מפעילים את ה-VM שערכתם:

    kubectl virt start VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

  6. בודקים את ה-STATUS של ה-VM:

    kubectl get gvm VM_NAME
    

    מוודאים שהמכונה הווירטואלית נמצאת במצב Running. אם המכונה הווירטואלית מבקשת הקצאה של StorageClass או דיסק שהמארח לא יכול לספק, המכונה הווירטואלית לא יכולה להתחיל לפעול. אם המכונה הווירטואלית לא במצב Running, צריך לבדוק את המניפסטים של המשאבים VirtualMachine ו-VirtualMachineDisk ואת התמיכה באחסון של המארח.

  7. כדי להציג מידע מפורט על מכונה וירטואלית באמצעות kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

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

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Disks:
        Name:  vm1-boot-dv
        Name:  data-disk-01
    ...
    

למידע נוסף, קראו את המאמר יצירה וניהול של דיסקים.

עריכת משאבי הרשת

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

  1. עוצרים את ה-VM שרוצים לערוך:

    kubectl virt stop VM_NAME
    

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

  2. משתמשים ב-kubectl כדי לערוך את המכונה הווירטואלית:

    kubectl edit gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שרוצים לערוך.

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

    לדוגמה, במניפסט VirtualMachine הבא, ה-VM מתחבר לרשת בשם backend-vlan100 ומשתמש ב-DHCP כי לא הוגדרה כתובת IP:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: backend-vlan100
          default: true
    ...
    

    אם רוצים לשנות את הרשת שאליה ה-VM מתחבר או להקצות כתובת IP ידנית, מעדכנים את הגדרות הרשת בכלי העריכה, כמו בדוגמה הבאה:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: NETWORK_NAME
            ipAddresses:
              - IP_ADDRESS
          default: true
    ...
    

    מחליפים את NETWORK_NAME בשם של הרשת שאליה רוצים להתחבר, או מוסיפים את הקטע ipAddresses ומציינים את ה-IP_ADDRESS שבו המכונה הווירטואלית תשתמש.

  4. שומרים וסוגרים את המניפסט של ה-VM.

  5. מפעילים את ה-VM שערכתם:

    kubectl virt start VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

  6. בודקים את ה-STATUS של ה-VM:

    kubectl get gvm VM_NAME
    

    מוודאים שהמכונה הווירטואלית נמצאת במצב Running. אם ה-VM מבקשת חיבור לרשת שהמארח לא יכול לספק, ה-VM לא יכולה להתחיל. אם ה-VM לא במצב Running, צריך לבדוק את מניפסט המשאבים של VirtualMachine ואת התמיכה ברשת המארחת.

  7. כדי להציג מידע מפורט על מכונה וירטואלית באמצעות kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שערכתם.

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

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
      Interfaces:
        Name:          eth0
        Network Name:  backend-vlan200
    ...
    Status:
      ...
      Interfaces:
        Dns Config:
          Nameservers:
            8.8.8.8
        gateway4:  10.200.0.9
        Ip Addresses:
          10.200.0.22/24
        Mac Address:    22:b4:e3:d2:ef:fb
        Name:           eth0
        Resource Name:  vm1-eth0-f2468
    ...
    

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

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

כדי לסנכרן שינויים רבים בהגדרות של ה-VM, כמו שינויים בהגדרות של compute, עם המכונה המתאימה של ה-VM‏ (VirtualMachineInstance), צריך לעצור את ה-VM ולהפעיל אותו מחדש. אפשר להגדיר מכונות VM שפועלות באשכולות בגרסה 1.13.0 ואילך כך שיופעלו מחדש באופן אוטומטי בכל פעם שמבצעים שינויים בהגדרות שלהן. כשמגדירים מכונה וירטואלית לשימוש בתכונה הזו, לא צריך לעצור ולהפעיל מחדש את המכונה הווירטואלית כשעורכים את המשאב בהתאמה אישית. סביבת זמן הריצה של VM ב-GDC עוקבת אחרי ה-VM, ואם היא מזהה שינוי בהגדרות, היא מפעילה מחדש את ה-VM באופן אוטומטי כדי לסנכרן את השינויים.

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

כדי להפעיל הפעלות מחדש אוטומטיות:

  1. משתמשים ב-kubectl כדי לערוך את המכונה הווירטואלית:

    kubectl edit gvm VM_NAME
    
  2. בעורך, מוסיפים את השדה autoRestartOnConfigurationChange ומגדירים אותו כ-true.

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

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      ...
      name: vm-sample-01
      namespace: default
      resourceVersion: "16711824"
      uid: ed623879-0cfa-52de-ad2c-b63308e6116c
    spec:
      autoRestartOnConfigurationChange: true
      compute:
        cpu:
          vcpus: 2
          ...
    
  3. שומרים וסוגרים את המניפסט של ה-VM.

    אם ביצעתם שינויים אחרים ב-VM שצריך לסנכרן עם מכונת ה-VM המתאימה, VM Runtime on GDC יפעיל מחדש את ה-VM. אם רק הפעלתם את ההפעלה מחדש האוטומטית, אין צורך להפעיל מחדש את המכונה הווירטואלית.

  4. בודקים את ה-status של ה-VM:

    kubectl get gvm VM_NAME
    

    בהתאם למהירות שבה אתם מקבלים את ה-VM, יכול להיות שתראו את ההודעה state: Starting בזמן שה-VM מופעל מחדש. כשהמכונה הווירטואלית תופעל מחדש, יופיע הסמל state: Running. אם תבצעו שינויים בהגדרות של המשאב המותאם אישית VirtualMachine, לא תצטרכו לעצור ולהפעיל את ה-VM באופן ידני. שינויים עוקבים במשאב המותאם אישית משתקפים במכונה הווירטואלית באופן עקבי.

שימו לב להתנהגות של התכונה במצבים הבאים:

  • אם עוצרים את ה-VM באופן ידני לפני שעורכים את המשאב המותאם אישית של VirtualMachine, השינוי בהגדרה לא מפעיל הפעלה מחדש. המצב "עצירה" של המכונה הווירטואלית לפני שינוי ההגדרה נשמר.

  • אם שיניתם את התוויות או את התזמון של ה-VM לפני שהפעלתם את תכונת ההפעלה מחדש האוטומטית, הוספת autoRestartOnConfigurationChange עכשיו בלי שינוי אחר לא תגרום להפעלה מחדש. באופן אידיאלי, התכונה הזו שומרת על עקביות בין המכונה הווירטואלית לבין ההגדרות שלה. עם זאת, VM Runtime on GDC לא יכול לזהות חוסר עקביות קודם.

פתרון בעיות בעריכת מכונות וירטואליות

אם העריכות של המשאב VirtualMachine מכילות שגיאות כששומרים אותן, השינויים נדחים ומוצגת הודעה. מתקנים את השגיאות ומנסים לשמור שוב את המשאב VirtualMachine. אם ה-VM לא מופעל אחרי השינויים, אתם יכולים להשתמש בפקודה kubectl describe gvm VM_NAME כדי לראות מידע על פתרון בעיות ולתקן את השגיאות.

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