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

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

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

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

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

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

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

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

  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. שומרים וסוגרים את מניפסט המכונה הווירטואלית.

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

    kubectl virt start VM_NAME
    

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

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

    kubectl get gvm VM_NAME
    

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

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

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

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

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

  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. שומרים וסוגרים את מניפסט המכונה הווירטואלית.

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

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

    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 הבא אפשר לראות שהמכונה הווירטואלית מתחברת לרשת בשם 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. שומרים וסוגרים את מניפסט המכונה הווירטואלית.

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

    kubectl virt start VM_NAME
    

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

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

    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 להפעלה מחדש אוטומטית

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

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

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

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

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

    kubectl get gvm VM_NAME
    

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

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

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

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

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