Come installare una VM Windows
L'installazione di una VM Windows Server su Hikube richiede diversi passaggi manuali: preparare i dischi ISO, creare la VM, installare Windows tramite VNC poi caricare i driver virtio. Questa guida dettaglia l'intero processo.
Prerequisiti
- kubectl configurato con il vostro kubeconfig Hikube
- virtctl installato per l'accesso VNC
- Licenza o valutazione Windows Server 2025 (l'ISO di valutazione viene utilizzato in questa guida)
- Spazio di storage sufficiente (circa 70 Gi in totale)
Passi
1. Creare il disco ISO Windows Server 2025
Create un VMDisk di tipo ottico contenente l'ISO di installazione Windows Server:
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: win2k25-iso
spec:
source:
http:
url: https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/SERVER_EVAL_x64FRE_en-us.iso
optical: true
storage: 7Gi
storageClass: replicated
kubectl apply -f win-iso-disk.yaml
2. Creare il disco ISO dei driver virtio
I driver virtio sono indispensabili affinché Windows riconosca i dischi e la rete in un ambiente KubeVirt:
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: virtio-drivers
spec:
source:
http:
url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
optical: true
storage: 1Gi
storageClass: replicated
kubectl apply -f virtio-drivers-disk.yaml
3. Creare il disco di sistema
Create un disco vuoto che servirà come disco di sistema per Windows:
apiVersion: apps.cozystack.io/v1alpha1
kind: VMDisk
metadata:
name: win-system
spec:
source: {}
optical: false
storage: 60Gi
storageClass: replicated
kubectl apply -f win-system-disk.yaml
4. Verificare che i tre dischi siano pronti
kubectl get vmdisk win2k25-iso virtio-drivers win-system
Risultato atteso:
NAME STATUS SIZE STORAGECLASS AGE
win2k25-iso Ready 7Gi replicated 2m
virtio-drivers Ready 1Gi replicated 2m
win-system Ready 60Gi replicated 1m
Il download dell'ISO Windows (~5 GB) può richiedere diversi minuti a seconda della larghezza di banda. Attendete che tutti i dischi siano in stato Ready.
5. Creare la VMInstance
Create la VM con i tre dischi collegati. Il disco di sistema deve essere in prima posizione:
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
metadata:
name: windows-server
spec:
runStrategy: Always
instanceProfile: windows.2k25.virtio
instanceType: u1.xlarge
external: true
externalMethod: PortList
externalPorts:
- 3389
disks:
- win-system
- win2k25-iso
- virtio-drivers
kubectl apply -f windows-vm.yaml
Attendete che la VM si avvii:
kubectl get vminstance windows-server -w
6. Accedere tramite VNC per l'installazione
Aprite una sessione VNC verso la VM:
virtctl vnc windows-server
L'installer Windows dovrebbe avviarsi automaticamente dall'ISO. Seguite i passaggi classici dell'installazione:
- Scegliete la lingua e la tastiera
- Cliccate su Installa ora
- Selezionate l'edizione Windows Server desiderata
- Accettate il contratto di licenza
- Scegliete Installazione personalizzata
7. Caricare i driver virtio durante l'installazione
Durante il passaggio di selezione del disco di installazione, Windows non rileverà nessun disco. Dovete caricare i driver virtio:
- Cliccate su Carica un driver (Load driver)
- Cliccate su Sfoglia (Browse)
- Navigate verso il lettore CD dei driver virtio (generalmente
E:\) - Selezionate la cartella
vioscsi\2k25\amd64(storage controller) - Cliccate su OK poi Avanti
Il disco da 60 GB dovrebbe ora apparire. Selezionatelo e proseguite l'installazione.
Dopo l'installazione, installate anche i driver di rete (NetKVM) e balloon di memoria (Balloon) dal CD virtio per prestazioni ottimali. Navigate nelle cartelle NetKVM\2k25\amd64 e Balloon\2k25\amd64.
8. Post-installazione: rimuovere i dischi ISO
Una volta che Windows è installato e funzionale, rimuovete i dischi ISO dal manifest per liberare le risorse e evitare di avviare dall'ISO:
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
metadata:
name: windows-server
spec:
runStrategy: Always
instanceProfile: windows.2k25.virtio
instanceType: u1.xlarge
external: true
externalMethod: PortList
externalPorts:
- 3389
disks:
- win-system
kubectl apply -f windows-vm.yaml
Potete poi eliminare i VMDisk ISO se non ne avete più bisogno:
kubectl delete vmdisk win2k25-iso virtio-drivers
9. Configurare l'accesso RDP (opzionale)
La VM espone già la porta 3389 (RDP). Recuperate l'indirizzo IP esterno:
kubectl get vminstance windows-server -o yaml
Connettetevi con il vostro client RDP:
# Da Linux
xfreerdp /v:<IP-ESTERNO> /u:Administrator
# Da macOS (Microsoft Remote Desktop)
# Aggiungete un PC con l'indirizzo <IP-ESTERNO>
Verifica
Verificate che la VM Windows funzioni correttamente:
kubectl get vminstance windows-server
Risultato atteso:
NAME STATUS AGE
windows-server Running 15m
Testate l'accesso RDP sulla porta 3389:
nc -zv <IP-ESTERNO> 3389