יצירת מכונה וירטואלית של Windows מקובץ ISO ב-Google Distributed Cloud

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

אפשר גם ליצור מכונת Windows וירטואלית מתמונת דיסק מוכנה באמצעות מקור HTTP או מ-Cloud Storage.

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

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

יצירת דיסק וירטואלי לתמונת ה-ISO

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

כדי לבצע אתחול מקובץ ISO של Windows, קודם צריך ליצור VirtualMachineDisk עם diskType של cdrom. משתמשים ב-ISO של Windows כמקור לדיסק הזה.

  1. יוצרים קובץ VirtualMachineDisk manifest, כמו windows-iso.yaml, בכלי העריכה הרצוי:

    nano windows-iso.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso
    spec:
      source:
        http:
          url: IMG_URL
      size: 10Gi
      diskType: cdrom
    

    מחליפים את IMG_URL בנתיב ה-HTTP לקובץ ה-ISO של Windows. אפשר גם ליצור פרטי כניסה ולהשתמש בהם כדי לייבא קובץ ISO מ-Cloud Storage.

  3. שומרים את המניפסט וסוגרים אותו בכלי העריכה.

  4. יצירת VirtualMachineDisk באמצעות kubectl:

    kubectl apply -f windows-iso.yaml
    

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

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

  1. יוצרים קובץ VirtualMachineDisk manifest, כמו virtio-driver.yaml, בכלי העריכה הרצוי:

    nano virtio-driver.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: virtio-driver
    spec:
      size: 1Gi
      source:
        registry:
          url: docker://quay.io/kubevirt/virtio-container-disk:latest
      diskType: cdrom
    

    קובץ המניפסט הזה שולף את הדרייברים העדכניים של virtio ממאגר Docker ציבורי ומגדיר את diskType כ-cdrom. המכונה הווירטואלית משתמשת בדיסק הזה במהלך תהליך ההתקנה.

  3. שומרים את המניפסט וסוגרים אותו בכלי העריכה.

  4. יצירת VirtualMachineDisk באמצעות kubectl:

    kubectl apply -f virtio-driver.yaml
    

יצירת מכונה וירטואלית של Windows

יוצרים מכונה וירטואלית שמבצעת אתחול מקובץ ה-ISO של Windows‏ VirtualMachineDisk ומצרפים את דיסק מנהלי ההתקנים virtio:

  1. יוצרים מניפסט שמגדיר VirtualMachineDisk לנפח האתחול וVirtualMachine, כמו windows-vm.yaml, בכלי העריכה הרצוי:

    nano windows-vm.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_NAME-boot-dv
    spec:
      size: 100Gi
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
        - virtualMachineDiskName: windows-iso
        - virtualMachineDiskName: virtio-driver
      compute:
        cpu:
          vcpus: 2
        memory:
          capacity: 4Gi
      interfaces:
        - name: eth0
          networkName: pod-network
    

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

    קובץ המניפסט הזה יוצר נפח אתחול של 100 גיביבייט (GiB). מכיוון שנפח האתחול הזה ריק כשהמכונה הווירטואלית מופעלת לראשונה, המכונה הווירטואלית מבצעת אתחול מ-ISO כמכשיר CD-ROM כדי להתחיל את תהליך ההגדרה. קובצי ה-virtio מצורפים גם הם כדי להשלים את תהליך ההתקנה.

  3. שומרים את המניפסט וסוגרים אותו בכלי העריכה.

  4. יוצרים את VirtualMachineDisk ואת VirtualMachine באמצעות kubectl:

    kubectl apply -f windows-vm.yaml
    

התחברות ל-VM של Windows והשלמת ההתקנה של מערכת ההפעלה

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

  1. מתחברים ל-VM של Windows:

    kubectl virt vnc VM_NAME
    

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

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

    מידע נוסף על שימוש ב-kubectl virt vnc כדי להתחבר ל-VM זמין במאמר התחברות ישירה באמצעות VNC.

  2. בהגדרות של Windows, בוחרים באפשרות התקנה בהתאמה אישית.

  3. בוחרים באפשרות Load driver (טעינת מנהל התקן), עוברים לספרייה viostor בדיסק virtio, ואז בוחרים את הספרייה שתואמת לגרסת Windows שרוצים להתקין.

    מידע נוסף זמין במאמר בנושא מנהלי התקנים של KubeVirt Windows virtio.

  4. עכשיו, כשמנהלי ההתקנים של האחסון והרשת מ-virtio זמינים, אפשר להשלים את שאר תהליך ההתקנה של Windows.

    מומלץ להפעיל את פרוטוקול שולחן העבודה המרוחק כדי שתוכלו להתחבר ישירות למכונה הווירטואלית אחרי ההתקנה.

מנתקים את קובץ ה-ISO ואת דיסק הדרייברים

אחרי שההתקנה של Windows מסתיימת, מסירים את דיסק מנהלי ההתקנים virtio ואת קובץ ה-ISO של Windows מהמכונה הווירטואלית:

  1. מפסיקים את ה-VM של Windows:

    kubectl virt stop VM_NAME
    

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

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

    kubectl edit gvm VM_NAME
    

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

  3. בקטע spec.disks בכלי לעריכת מוצרים, מסירים את הדיסקים של Windows ISO ו-virtio, כמו בדוגמה הבאה. הדיסק היחיד שצריך להישאר מחובר ל-VM הוא VM_NAME-boot-dv:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: windows-vm
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: windows-vm-boot-dv
          boot: true
      interfaces:
    ...
    
  4. שומרים וסוגרים את מניפסט המכונה הווירטואלית.

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

    kubectl virt start VM_NAME
    

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

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

    kubectl get gvm VM_NAME
    

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

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

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