Dépannage — Machines virtuelles
VM ne boot pas
Cause : le disque système n'est pas prêt, l'image source est invalide, ou le profil d'instance ne correspond pas à l'image.
Solution :
-
Vérifiez que les ressources VMDisk existent et sont prêtes :
kubectl get vmdisk -
Vérifiez les événements de la VMInstance :
kubectl describe vminstance <vm-name> -
Vérifiez que l'
instanceProfileest adapté à l'OS de l'image (par exempleubuntupour une image Ubuntu). Un profil inadapté n'empêche pas le démarrage mais la VM ne sera pas optimisée (drivers manquants). -
Vérifiez que l'
instanceTypechoisi est valide (préfixes1,u1oum1suivi d'une taille valide).
SSH timeout avec PortList
Cause : le port 22 n'est pas dans la liste externalPorts, l'exposition externe n'est pas activée, ou la clé SSH n'a pas été injectée.
Solution :
-
Vérifiez que
external: trueest activé et que le port 22 est listé :vm.yamlspec:
external: true
externalMethod: PortList
externalPorts:
- 22 -
Récupérez l'adresse IP du service exposé :
kubectl get svc -
Vérifiez que votre clé SSH a bien été injectée dans le manifeste :
vm.yamlspec:
sshKeys:
- "ssh-ed25519 AAAAC3... user@laptop" -
Testez la connexion en mode verbose :
ssh -v user@<external-ip>
DNS .local ne fonctionne pas dans la VM
Cause : systemd-resolved traite les domaines .local comme du mDNS (multicast DNS), ce qui empêche la résolution DNS classique pour ces domaines.
Solution :
-
Créez un drop-in pour
systemd-networkdqui désactive le mDNS :sudo mkdir -p /etc/systemd/network/10-cloud-init-eth0.network.d -
Créez le fichier de configuration :
sudo tee /etc/systemd/network/10-cloud-init-eth0.network.d/override.conf << 'EOF'
[Network]
MulticastDNS=no
EOF -
Rechargez la configuration réseau :
sudo networkctl reload -
Vérifiez que la résolution fonctionne :
resolvectl status
resolvectl query mon-service.local
Ce problème affecte toutes les distributions utilisant systemd-resolved (Ubuntu 22.04+, Debian 12+, etc.). Le correctif persiste après redémarrage.
Disque non attaché à la VM
Cause : le nom du VMDisk ne correspond pas à l'entrée dans spec.disks, le VMDisk n'est pas prêt, ou la storageClass est invalide.
Solution :
-
Vérifiez que le nom du VMDisk correspond exactement à celui référencé dans
spec.disks:vm.yamlspec:
disks:
- data-volume # Doit correspondre à metadata.name du VMDisk -
Vérifiez le statut du VMDisk :
kubectl get vmdisk data-volume
kubectl describe vmdisk data-volume -
Les storageClasses disponibles sur Hikube sont :
local,replicatedetreplicated-async. Pour une VM (instance isolée),replicatedest recommandé.
Console série / VNC pour debug
Cause : la VM ne répond pas en SSH et vous avez besoin d'un accès direct pour diagnostiquer le problème.
Solution :
-
Pour un accès console série (texte) :
virtctl console <vm-name> -
Pour un accès VNC (graphique) :
virtctl vnc <vm-name> -
Depuis la console, vous pouvez vérifier :
- Les logs de démarrage
- La configuration réseau (
ip addr,ip route) - L'état des services (
systemctl status) - Les logs système (
journalctl -xe)
virtctl est le CLI KubeVirt. Installez-le depuis les releases KubeVirt.