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

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

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

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

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

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

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

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

  1. מפסיקים את מכונת ה-VM שרוצים לערוך:

    kubectl virt stop VM_NAME
    

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

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

    kubectl edit gvm VM_NAME
    

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

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

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

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

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

    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 של המכונה הווירטואלית:

    kubectl get gvm VM_NAME
    

    מוודאים שהמכונה הווירטואלית במצב Running. אם מכונת ה-VM שלכם מבקשת יותר משאבי מחשוב ממה שהמארח יכול לספק, אי אפשר להפעיל את מכונת ה-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 בשם המכונה הווירטואלית שערכתם.

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

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

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

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

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

  1. מפסיקים את מכונת ה-VM שרוצים לערוך:

    kubectl virt stop VM_NAME
    

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

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

    kubectl edit gvm VM_NAME
    

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

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

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

    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 של המכונה הווירטואלית:

    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
    ...
    

מידע נוסף זמין במאמר בנושא יצירה וניהול של דיסקים.

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

יכול להיות שתרצו לשנות את הגדרות הרשת של מכונה וירטואלית כשהתשתית משתנה. לדוגמה, יכול להיות שתרצו לחבר את המכונה הווירטואלית לרשת וירטואלית אחרת או להקצות כתובת 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
    ...
    

    אם רוצים לשנות את הרשת שאליה המכונה הווירטואלית מתחברת או להקצות כתובת 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 של המכונה הווירטואלית:

    kubectl get gvm VM_NAME
    

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

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

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

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

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

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

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

    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 Runtime ב-GDC יפעיל מחדש את המכונה הווירטואלית. אם ביצעתם רק את השינוי להפעלת הפעלה מחדש אוטומטית, לא צריך להפעיל מחדש את המכונה הווירטואלית.

  4. בודקים את status של המכונה הווירטואלית:

    kubectl get gvm VM_NAME
    

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

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

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

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

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