Fehlerbehebung — Virtuelle Maschinen
VM startet nicht
Ursache: Die Systemfestplatte ist nicht bereit, das Quellimage ist ungültig oder das Instanzprofil passt nicht zum Image.
Lösung:
-
Überprüfen Sie, dass die VMDisk-Ressourcen existieren und bereit sind:
kubectl get vmdisk -
Überprüfen Sie die Ereignisse der VMInstance:
kubectl describe vminstance <vm-name> -
Überprüfen Sie, dass das
instanceProfilezum OS des Images passt (z.B.ubuntufür ein Ubuntu-Image). Ein unpassendes Profil verhindert den Start nicht, aber die VM wird nicht optimiert (fehlende Treiber). -
Überprüfen Sie, dass der gewählte
instanceTypegültig ist (Präfixs1,u1oderm1gefolgt von einer gültigen Größe).
SSH-Timeout mit PortList
Ursache: Port 22 ist nicht in der Liste externalPorts, die externe Exposition ist nicht aktiviert oder der SSH-Schlüssel wurde nicht injiziert.
Lösung:
-
Überprüfen Sie, dass
external: trueaktiviert ist und Port 22 aufgelistet ist:vm.yamlspec:
external: true
externalMethod: PortList
externalPorts:
- 22 -
Rufen Sie die IP-Adresse des exponierten Services ab:
kubectl get svc -
Überprüfen Sie, dass Ihr SSH-Schlüssel im Manifest injiziert wurde:
vm.yamlspec:
sshKeys:
- "ssh-ed25519 AAAAC3... user@laptop" -
Testen Sie die Verbindung im Verbose-Modus:
ssh -v user@<external-ip>
DNS .local funktioniert nicht in der VM
Ursache: systemd-resolved behandelt .local-Domains als mDNS (Multicast DNS), was die klassische DNS-Auflösung für diese Domains verhindert.
Lösung:
-
Erstellen Sie ein Drop-in für
systemd-networkd, das mDNS deaktiviert:sudo mkdir -p /etc/systemd/network/10-cloud-init-eth0.network.d -
Erstellen Sie die Konfigurationsdatei:
sudo tee /etc/systemd/network/10-cloud-init-eth0.network.d/override.conf << 'EOF'
[Network]
MulticastDNS=no
EOF -
Laden Sie die Netzwerkkonfiguration neu:
sudo networkctl reload -
Überprüfen Sie, dass die Auflösung funktioniert:
resolvectl status
resolvectl query mon-service.local
Dieses Problem betrifft alle Distributionen, die systemd-resolved verwenden (Ubuntu 22.04+, Debian 12+, usw.). Die Korrektur bleibt nach einem Neustart bestehen.
Festplatte nicht an die VM angehängt
Ursache: Der VMDisk-Name stimmt nicht mit dem Eintrag in spec.disks überein, der VMDisk ist nicht bereit oder die storageClass ist ungültig.
Lösung:
-
Überprüfen Sie, dass der VMDisk-Name genau mit dem in
spec.disksreferenzierten übereinstimmt:vm.yamlspec:
disks:
- data-volume # Muss mit metadata.name des VMDisk übereinstimmen -
Überprüfen Sie den Status des VMDisk:
kubectl get vmdisk data-volume
kubectl describe vmdisk data-volume -
Die auf Hikube verfügbaren storageClasses sind:
local,replicatedundreplicated-async. Für eine VM (isolierte Instanz) wirdreplicatedempfohlen.
Serielle Konsole / VNC für Debugging
Ursache: Die VM antwortet nicht per SSH und Sie benötigen einen direkten Zugang zur Diagnose des Problems.
Lösung:
-
Für seriellen Konsolenzugang (Text):
virtctl console <vm-name> -
Für VNC-Zugang (grafisch):
virtctl vnc <vm-name> -
Von der Konsole aus können Sie überprüfen:
- Die Startprotokolle
- Die Netzwerkkonfiguration (
ip addr,ip route) - Den Zustand der Dienste (
systemctl status) - Die Systemprotokolle (
journalctl -xe)
virtctl ist das KubeVirt-CLI. Installieren Sie es von den KubeVirt-Releases.