Import a Windows Virtual Machine from the External Platform¶
This page provides a detailed introduction on how to import virtual machines from an external platform -- VMware, into the virtual machines of DCE 5.0 using the command line.
Info
The external virtual platform on this page is VMware vSphere Client, abbreviated as vSphere. Technically, it relies on kubevirt cdi for implementation. Before proceeding, the virtual machine imported on vSphere needs to be shut down. Take a virtual machine of the Windows operating system as an example.
Environment Preparation¶
Before importing, refer to the Network Configuration to prepare the environment.
Fetch Information of the Windows Virtual Machine¶
Similar to importing a virtual machine with a Linux operating system, refer to Importing a Linux Virtual Machine with Ubuntu from an External Platform to get the following information:
- vSphere account and password
- vSphere virtual machine information
Check the Boot Type of Windows¶
When importing a virtual machine from an external platform into the DCE 5.0 virtualization platform, you need to configure it according to the boot type (BIOS or UEFI) to ensure it can boot and run correctly.
You can check whether Windows uses BIOS or UEFI through "System Summary." If it uses UEFI, you need to add the relevant information in the YAML file.
Import Process¶
Prepare the window.yaml
file and pay attention to the following configmaps:
- PVC booting Virtio drivers
- Disk bus type, set to SATA or Virtio depending on the boot type
- UEFI configuration (if UEFI is used)
Click to view the window.yaml example
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
labels:
virtnest.io/os-family: windows
virtnest.io/os-version: "server2019"
name: export-window-21
namespace: default
spec:
dataVolumeTemplates:
- metadata:
name: export-window-21-rootdisk
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 22Gi
storageClassName: local-path
source:
vddk:
backingFile: "[A05-09-ShangPu-Local-DataStore] virtnest-export-window/virtnest-export-window.vmdk"
url: "https://10.64.56.21"
uuid: "421d40f2-21a2-cfeb-d5c9-e7f8abfc2faa"
thumbprint: "D7:C4:22:E3:6F:69:DA:72:50:81:12:FA:42:18:3F:29:5C:7F:41:CA"
secretRef: "vsphere21"
initImageURL: "release.daocloud.io/virtnest/vddk:v8"
- metadata:
name: export-window-21-datadisk
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: local-path
source:
vddk:
backingFile: "[A05-09-ShangPu-Local-DataStore] virtnest-export-window/virtnest-export-window_1.vmdk"
url: "https://10.64.56.21"
uuid: "421d40f2-21a2-cfeb-d5c9-e7f8abfc2faa"
thumbprint: "D7:C4:22:E3:6F:69:DA:72:50:81:12:FA:42:18:3F:29:5C:7F:41:CA"
secretRef: "vsphere21"
initImageURL: "release.daocloud.io/virtnest/vddk:v8"
# <1>. PVC for booting Virtio drivers
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- metadata:
name: virtio-disk
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
storageClassName: local-path
source:
blank: {}
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
running: true
template:
metadata:
annotations:
ipam.spidernet.io/ippools: '[{"cleangateway":false,"ipv4":["test86"]}]'
spec:
dnsConfig:
nameservers:
- 223.5.5.5
domain:
cpu:
cores: 2
memory:
guest: 4Gi
devices:
disks:
- bootOrder: 1
disk:
bus: sata # <2> Disk bus type, set to SATA or Virtio depending on the boot type
name: rootdisk
- bootOrder: 2
disk:
bus: sata # <2> Disk bus type, set to SATA or Virtio depending on the boot type
name: datadisk
# <1>. disk for booting Virtio drivers
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- bootOrder: 3
disk:
bus: virtio
name: virtdisk
- bootOrder: 4
cdrom:
bus: sata
name: virtiocontainerdisk
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
interfaces:
- bridge: {}
name: ovs-bridge0
# <3> In the above section "Check the Boot Type of Windows"
# If using UEFI, add the following information
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
features:
smm:
enabled: true
firmware:
bootloader:
efi:
secureBoot: false
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
machine:
type: q35
resources:
requests:
memory: 4Gi
networks:
- multus:
default: true
networkName: kube-system/test1
name: ovs-bridge0
volumes:
- dataVolume:
name: export-window-21-rootdisk
name: rootdisk
- dataVolume:
name: export-window-21-datadisk
name: datadisk
# <1> Volumes for booting Virtio drivers
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- dataVolume:
name: virtio-disk
name: virtdisk
- containerDisk:
image: release-ci.daocloud.io/virtnest/kubevirt/virtio-win:v4.12.12-5
name: virtiocontainerdisk
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
Install VirtIO Drivers via VNC¶
- Access and connect to the virtual machine via VNC.
- Download and install the appropriate VirtIO drivers based on the Windows version.
- Enable Remote Desktop to facilitate future connections via RDP.
- After installation, update the YAML file and reboot the virtual machine.
Update YAML After Reboot¶
Click to view the modified `window.yaml` example
# Delete fields marked with <1>, modify fields marked with <2>: change sata to virtio
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
labels:
virtnest.io/os-family: windows
virtnest.io/os-version: "server2019"
name: export-window-21
namespace: default
spec:
dataVolumeTemplates:
- metadata:
name: export-window-21-rootdisk
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 22Gi
storageClassName: local-path
source:
vddk:
backingFile: "[A05-09-ShangPu-Local-DataStore] virtnest-export-window/virtnest-export-window.vmdk"
url: "https://10.64.56.21"
uuid: "421d40f2-21a2-cfeb-d5c9-e7f8abfc2faa"
thumbprint: "D7:C4:22:E3:6F:69:DA:72:50:81:12:FA:42:18:3F:29:5C:7F:41:CA"
secretRef: "vsphere21"
initImageURL: "release.daocloud.io/virtnest/vddk:v8"
- metadata:
name: export-window-21-datadisk
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: local-path
source:
vddk:
backingFile: "[A05-09-ShangPu-Local-DataStore] virtnest-export-window/virtnest-export-window_1.vmdk"
url: "https://10.64.56.21"
uuid: "421d40f2-21a2-cfeb-d5c9-e7f8abfc2faa"
thumbprint: "D7:C4:22:E3:6F:69:DA:72:50:81:12:FA:42:18:3F:29:5C:7F:41:CA"
secretRef: "vsphere21"
initImageURL: "release.daocloud.io/virtnest/vddk:v8"
running: true
template:
metadata:
annotations:
ipam.spidernet.io/ippools: '[{"cleangateway":false,"ipv4":["test86"]}]'
spec:
dnsConfig:
nameservers:
- 223.5.5.5
domain:
cpu:
cores: 2
memory:
guest: 4Gi
devices:
disks:
- bootOrder: 1
disk:
bus: virtio # <2>
name: rootdisk
- bootOrder: 2
disk:
bus: virtio # <2>
name: datadisk
interfaces:
- bridge: {}
name: ovs-bridge0
# <3> In the above section "Check the Boot Type of Windows"
# If using UEFI, add the following information
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
features:
smm:
enabled: true
firmware:
bootloader:
efi:
secureBoot: false
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
machine:
type: q35
resources:
requests:
memory: 4Gi
networks:
- multus:
default: true
networkName: kube-system/test1
name: ovs-bridge0
volumes:
- dataVolume:
name: export-window-21-rootdisk
name: rootdisk
- dataVolume:
name: export-window-21-datadisk
name: datadisk
Access and Verify via RDP¶
-
Use an RDP client to connect to the virtual machine. Log in with the default account
admin
and passworddangerous!123
. -
Verify network access and data disk data
Differences Between Importing Linux and Windows Virtual Machines¶
- Windows may require UEFI configuration.
- Windows typically requires the installation of VirtIO drivers.
- Windows multi-disk imports usually do not require re-mounting of disks.