Risoluzione dei problemi — Macchine virtuali
La VM non si avvia
Causa: il disco di sistema non è pronto, l'immagine sorgente non è valida, o il profilo di istanza non corrisponde all'immagine.
Soluzione:
-
Verificate che le risorse VMDisk esistano e siano pronte:
kubectl get vmdisk -
Verificate gli eventi della VMInstance:
kubectl describe vminstance <vm-name> -
Verificate che l'
instanceProfilesia adatto all'OS dell'immagine (ad esempioubuntuper un'immagine Ubuntu). Un profilo inadatto non impedisce l'avvio ma la VM non sarà ottimizzata (driver mancanti). -
Verificate che l'
instanceTypescelto sia valido (prefissos1,u1om1seguito da una dimensione valida).
SSH timeout con PortList
Causa: la porta 22 non è nella lista externalPorts, l'esposizione esterna non è attivata, o la chiave SSH non è stata iniettata.
Soluzione:
-
Verificate che
external: truesia attivato e che la porta 22 sia elencata:vm.yamlspec:
external: true
externalMethod: PortList
externalPorts:
- 22 -
Recuperate l'indirizzo IP del servizio esposto:
kubectl get svc -
Verificate che la vostra chiave SSH sia stata iniettata nel manifest:
vm.yamlspec:
sshKeys:
- "ssh-ed25519 AAAAC3... user@laptop" -
Testate la connessione in modalità verbose:
ssh -v user@<external-ip>
Il DNS .local non funziona nella VM
Causa: systemd-resolved tratta i domini .local come mDNS (multicast DNS), il che impedisce la risoluzione DNS classica per questi domini.
Soluzione:
-
Create un drop-in per
systemd-networkdche disabilita il mDNS:sudo mkdir -p /etc/systemd/network/10-cloud-init-eth0.network.d -
Create il file di configurazione:
sudo tee /etc/systemd/network/10-cloud-init-eth0.network.d/override.conf << 'EOF'
[Network]
MulticastDNS=no
EOF -
Ricaricate la configurazione di rete:
sudo networkctl reload -
Verificate che la risoluzione funzioni:
resolvectl status
resolvectl query mio-servizio.local
Questo problema interessa tutte le distribuzioni che utilizzano systemd-resolved (Ubuntu 22.04+, Debian 12+, ecc.). La correzione persiste dopo il riavvio.
Disco non collegato alla VM
Causa: il nome del VMDisk non corrisponde alla voce in spec.disks, il VMDisk non è pronto, o la storageClass non è valida.
Soluzione:
-
Verificate che il nome del VMDisk corrisponda esattamente a quello referenziato in
spec.disks:vm.yamlspec:
disks:
- data-volume # Deve corrispondere a metadata.name del VMDisk -
Verificate lo stato del VMDisk:
kubectl get vmdisk data-volume
kubectl describe vmdisk data-volume -
Le storageClass disponibili su Hikube sono:
local,replicatedereplicated-async. Per una VM (istanza isolata),replicatedè raccomandato.
Console seriale / VNC per debug
Causa: la VM non risponde in SSH e avete bisogno di un accesso diretto per diagnosticare il problema.
Soluzione:
-
Per un accesso console seriale (testo):
virtctl console <vm-name> -
Per un accesso VNC (grafico):
virtctl vnc <vm-name> -
Dalla console, potete verificare:
- I log di avvio
- La configurazione di rete (
ip addr,ip route) - Lo stato dei servizi (
systemctl status) - I log di sistema (
journalctl -xe)
virtctl è il CLI KubeVirt. Installatelo dalle release KubeVirt.