In diesem Dokument erfahren Sie, wie Sie die VM Runtime on Google Distributed Cloud aktivieren oder deaktivieren, indem Sie entweder die benutzerdefinierte Ressource VMRuntime aktualisieren oder bmctl-Befehle ausführen.
Hinweise
Zum Aktivieren oder Deaktivieren der VM Runtime on GDC benötigen Sie Zugriff auf die folgenden Ressourcen und Tools:
- Zugriff auf einen Google Distributed Cloud-Cluster der Version 1.12.0 (
anthosBareMetalVersion: 1.12.0) oder höher. Sie können einen beliebigen Clustertyp verwenden, der Arbeitslasten ausführen kann. Bei Bedarf können Sie Google Distributed Cloud on Compute Engine ausprobieren oder die Übersicht zur Clustererstellung aufrufen. bmctl-Befehlszeilentool Weitere Informationen finden Sie unterbmctl-Tool herunterladen und installieren.
Aktivieren Sie die VM Runtime auf GDC
Die VM Runtime on GDC wird automatisch in Google Distributed Cloud Version 1.10 oder höher installiert, ist aber standardmäßig deaktiviert. Bevor Sie VM-Ressourcen in Ihrer Google Distributed Cloud ausführen können, müssen Sie die VM Runtime on GDC aktivieren.
bmctl
Verwenden Sie das Tool
bmctl, um die Laufzeit zu aktivieren:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATHGeben Sie den Pfad zur kubeconfig-Datei für Ihren Cluster an. Google Distributed Cloud generiert die kubeconfig-Datei auf der Administrator-Workstation, wenn Sie einen Cluster erstellen. Der Pfad ist standardmäßig
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.Wenn die VM Runtime on GDC bereits aktiviert ist, gibt der Befehl einen Fehler zurück.
Zusätzliche Einstellungen, z. B. für die Emulation oder das Image-format, können durch Bearbeiten der benutzerdefinierten Ressource VMRuntime konfiguriert werden.
Benutzerdefinierte Ressource
Zum Aktivieren der Laufzeit aktualisieren Sie die benutzerdefinierte Ressource VMRuntime: Diese benutzerdefinierte Ressource wird standardmäßig installiert.
Bearbeiten Sie die benutzerdefinierte
VMRuntime-Ressource:kubectl edit vmruntimeLegen Sie
enabled:truein der Spezifikation fest:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2Im vorherigen Abschnitt
speckönnen die folgenden Werte festgelegt werden:enabled: Auf „true“ gesetzt, um die VM Runtime on GDC zu aktivierenuseEmulation: Wenn Ihr Knoten die Hardwarevirtualisierung nicht unterstützt oder Sie sich nicht sicher sind, legen Sie den Wert auf "true" fest. Die Hardwarevirtualisierung bietet eine bessere Leistung als die Softwareemulation. Das FelduseEmulationist standardmäßig auffalsegesetzt, wenn es nicht angegeben ist.vmImageFormat: Unterstützt zwei Laufwerk-Image-Format-Werte:rawundqcow2. Wenn SievmImageFormatnicht festlegen, verwendet die VM Runtime on GDC das Laufwerk-Image-Formatraw, um VMs zu erstellen. Das Formatrawbietet möglicherweise eine bessere Leistung gegenüberqcow2, eine Kopie des Schreibformats, benötigt aber möglicherweise mehr Platz auf dem Laufwerk. Weitere Informationen zu den Image-Formaten für Ihre VM finden Sie in der QEMU-Dokumentation unter Dateiformate für Laufwerk-Images.
Speichern Sie die benutzerdefinierte Ressource in Ihrem Editor.
Prüfen Sie, ob die benutzerdefinierte Ressource
VMRuntimeaktiviert ist:kubectl describe vmruntime vmruntimeDie Details der benutzerdefinierten Ressource
VMRuntimeenthalten den AbschnittStatus. Die VM Runtime on GDC ist aktiviert und funktioniert, wenn fürVMRuntime.Status.Readyder Werttrueangezeigt wird.
VM Runtime on GDC deaktivieren
Wenn Sie die VM Runtime on GDC nicht mehr verwenden müssen, können Sie diese Funktion deaktivieren.
bmctl
Verwenden Sie das Tool
bmctl, um die Laufzeit zu aktivieren:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=trueGeben Sie den Pfad zur kubeconfig-Datei für Ihren Cluster und die Werte für die folgenden Konfigurationsoptionen an:
--force: Gesetzt auftrue, um zu bestätigen, dass Sie vorhandene VM-Ressourcen löschen möchten. Der Standardwert istfalse.
Benutzerdefinierte Ressource
Zum Deaktivieren der Laufzeit aktualisieren Sie die benutzerdefinierte Ressource VMRuntime:
Bearbeiten Sie die benutzerdefinierte
VMRuntime-Ressource:kubectl edit vmruntimeLegen Sie
enabled:falsein der Spezifikation fest:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2Speichern Sie die aktualisierte benutzerdefinierte Ressourcenspezifikation in Ihrem Editor.
Wenn Sie prüfen möchten, ob die benutzerdefinierte Ressource
VMRuntimedeaktiviert ist, rufen Sie die Pods auf, die im Namespacevm-systemausgeführt werden:kubectl get pods --namespace vm-systemDie VM Runtime on GDC wurde deaktiviert, wenn nur die Pods, die zur Bereitstellung
vmruntime-controller-managergehören, im Namespace ausgeführt werden.
Informationen zum Verhalten laufender VMs
Die Annotation baremetal.cluster.gke.io/vmrumtime-force-disable kann für die VM Runtime on GDC-Ressource verwendet werden, um das Verhalten zu definieren, wenn die Laufzeit deaktiviert wird, während VMs im Cluster ausgeführt werden.
Das folgende Beispiel zeigt, dass der Wert dieser Annotation standardmäßig auf false gesetzt ist:
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
Wenn diese Anmerkung auf false gesetzt ist, versucht die VM Runtime on GDC, laufende VMs zu schützen. Löschen Sie alle ausgeführten VMs, bevor die VM Runtime on GDC deaktiviert wird, oder geben Sie den Parameter --force=true mit dem Befehl bmctl disable vmruntime an, wie im vorherigen Abschnitt gezeigt.
In der folgenden Tabelle wird erläutert, was mit aktiven VMs geschieht, wenn diese Annotation auf true oder false gesetzt ist und wenn Sie den Parameter --force=true angeben oder nicht:
| Cluster Status | --force parameter | vmrumtime-force-disable Annotation | Verhalten |
|---|---|---|---|
| Keine VMs | – | – | VM Runtime on GDC deaktivieren. |
| Vorhandene VMs | Wahr | Wahr | Alle laufenden VMs und die zugehörigen Ressourcen löschen. VM Runtime on GDC deaktivieren. |
| True | Falsch | Alle laufenden VMs und die zugehörigen Ressourcen löschen. VM Runtime on GDC deaktivieren. | |
| Falsch | Wahr | Aufforderung zum Löschen laufender VMs und zugehöriger Ressourcen. Wenn alle laufenden VMs gelöscht wurden, deaktivieren Sie die VM Runtime on GDC. | |
| Falsch | Falsch | Keine vorhandenen laufenden VMs löschen. VM Runtime on GDC nicht deaktivieren. Der bmctl-Befehl gibt einen Fehler zurück. |
Preflight-Prüfung der VM Runtime on GDC
Bei der Preflight-Prüfung der VM Runtime on GDC werden eine Reihe von Voraussetzungen in der Umgebung des Computers geprüft, bevor die VM Runtime on GDC und VMs verwendet werden. Die VM-Erstellung wird blockiert, wenn die Preflight-Prüfung der VM Runtime on GDC fehlgeschlagen ist. Die Preflight-Prüfung der VM Runtime on GDC wird automatisch ausgeführt, wenn spec.enabled auf „true“ gesetzt ist.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
Die Preflight-Prüfung der VM Runtime on GDC wird ausgeführt, wenn Sie eine der folgenden Aktionen ausführen:
Aktivieren Sie die VM Runtime auf GDC
Aktivieren Sie Funktionen der VM Runtime on GDC, z. B. useEmulation
Cluster aktualisieren
Entfernen Sie das Label
kubevm.io/VM-SkipScheduleauf KnotenErstellen Sie unabhängig ein Preflight-Prüfungsobjekt für die VM Runtime on GDC, indem Sie den Befehl
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATHausführen oder einVMRuntimePreflightCheckYAML-Manifest anwenden.
Sie können VMs starten, wenn die letzte Preflight-Prüfung der VM Runtime on GDC erfolgreich war. Wenn die Preflight-Prüfung fehlschlägt, wird die VM-Erstellung blockiert und Sie erhalten Fehler bei der Preflight-Prüfung.
Erfolg der Preflight-Prüfung überprüfen
Führen Sie die folgenden Befehle aus, um zu prüfen, ob die Preflight-Prüfungen erfolgreich waren:
Letzte Preflight-Prüfungen suchen:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATHDie Ausgabe sollte wie folgt aussehen:
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21sFühren Sie den folgenden Befehl aus, um den Status einer Preflight-Prüfung zu ermitteln:
kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH... preflightCheckSummary: preflightCheckSummary: featureStatuses: CPU: passed: true KVM: passed: true preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 preflightCheckPassed: true ...
Fehler bei der Preflight-Prüfung beheben
Wenn die Preflight-Prüfung fehlschlägt, führen Sie die folgenden Schritte zur Fehlerbehebung aus:
Letzte Preflight-Prüfungen suchen.
kubectl get vmruntimepfc -n vm-systemPrüfen Sie den Status dieser Preflight-Prüfung, um Details zu erhalten.
kubectl get vmruntimepfc -n vm-system \ vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \ --kubeconfig KUBECONFIG_PATH... status: checks: worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos: passed: false results: - checkName: CPU passed: true - checkName: KVM message: | command terminated with exit code 1 ls: /mnt/dev/kvm: No such file or directory passed: false ...Beheben Sie das Problem und führen Sie die Preflight-Prüfung der VM Runtime on GDC noch einmal aus. Das Folgende zeigt ein Beispiel für ein YAML-Manifest für VMRuntimePreflightCheck:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system