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

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

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

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

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

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

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

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

  1. יוצרים מניפסט של VirtualMachineDisk, כמו 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, כמו 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 Gibibyte (GiB)‎. מכיוון שנפח האתחול הזה ריק כשהמכונה הווירטואלית מופעלת בפעם הראשונה, המכונה הווירטואלית מבצעת אתחול מ-ISO כמכשיר CD-ROM כדי להתחיל את שגרת ההגדרה. מנהלי ההתקנים של virtio מצורפים גם הם כדי להשלים את תהליך ההתקנה.

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

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

    kubectl apply -f windows-vm.yaml
    

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

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

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

    kubectl virt vnc VM_NAME
    

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

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

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

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

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

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

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

    מומלץ להפעיל את פרוטוקול Remote Desktop ‏(RDP) כדי שתוכלו להתחבר ישירות למכונה הווירטואלית אחרי ההתקנה.

ניתוק קובץ האימג' של ה-ISO ודיסק מנהלי ההתקנים

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

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

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

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