VM-Startzeit minimieren

Wenn Ihre VMs so schnell wie möglich hochgefahren werden sollen, können Sie die Startzeit Ihrer virtuellen Maschine (VM) mit der Anleitung auf dieser Seite minimieren. Die Minimierung der Startzeit geht auf Kosten der Ressourceneffizienz – Ihr Projekt verbraucht zusätzliche Ressourcen und hat eine größere Sicherheitslücke.

Hinweise

Wenn Sie die Befehlszeilenbefehle (Command-Line Interface, CLI) von gdcloud verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben. Für alle Befehle für Distributed Cloud wird die gdcloud- oder kubectl-CLI verwendet. Außerdem ist eine Betriebssystemumgebung erforderlich.

Pfad der kubeconfig-Datei abrufen

Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.

  2. Verwenden Sie den Pfad zur kubeconfig-Datei des Management API-Servers, um MANAGEMENT_API_SERVER in dieser Anleitung zu ersetzen.

Berechtigungen und Zugriff anfordern

Zum Ausführen der auf dieser Seite aufgeführten Aufgaben benötigen Sie die Rolle „ProjectVirtualMachine Admin“. Prüfen Sie, ob Sie die Rolle „Project VirtualMachine Admin“ (project-vm-admin) im Namespace des Projekts haben, in dem sich die VM befindet.

Laufwerkverbindungen aufrechterhalten

Wenn eine VM gestartet wird, dauert es einige Sekunden, bis eine Verbindung vom Knoten der VM zum Datenträger der VM hergestellt wird. Damit die VM schneller startet, muss die Laufwerkverbindung beim Herunterfahren der VM aufrechterhalten werden, damit sie bei nachfolgenden VM-Starts nicht neu initialisiert wird. Wenn Sie den Befehl ausführen, um die Keep-Alive-Funktion für die Laufwerkverbindung zu aktivieren, erstellt das System automatisch einen Dummy-Pod, in dem alle Laufwerke der VM eingebunden werden.

Keep-Alive-Funktion für Laufwerksverbindung aktivieren

Führen Sie den folgenden Befehl aus, um die Laufwerkverbindungen für eine VM mit dem Namen VM_NAME im Projekt PROJECT aufrechtzuerhalten. In diesem Fall wird der Dummy-Pod automatisch erstellt:

kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'

Ersetzen Sie die Variablen in dieser Anleitung anhand der folgenden Definitionen.

VariableDefinition
MANAGEMENT_API_SERVER Die kubeconfig-Datei des Management API-Servers.
VM_NAME Der Name der VM.
PROJECT Das GDC-Projekt, in dem sich die VM befindet.

Wenn die Keep-Alive-Funktion für die Laufwerkverbindung aktiviert ist, wird im selben Projekt wie die VM ein Pod mit dem Namen disk-connection-keep-alive-VM_NAME erstellt. Der nächste VM-Neustart ist schneller, ebenso wie die nachfolgenden Startzeiten, da die Laufwerkverbindungen der VM vom Pod aufrechterhalten werden.

Affinität für Keep-Alive-Verbindungen für Laufwerke einrichten

Der Kubernetes-Scheduler wählt möglicherweise einen anderen Knoten für die VM aus, wenn sie neu gestartet wird. Um die Wahrscheinlichkeit dafür zu verringern, konfigurieren Sie eine VM-zu-VM-Affinitätsregel zwischen der VM und dem Keep-Alive-Pod. So konfigurieren Sie, dass dies automatisch geschieht:

kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'

Dadurch wird der Keep-Alive-Pod auf der VM mit einer bevorzugten Affinitätseinstellung versehen.

Vorsichtsmaßnahmen

Beim Aufrechterhalten von Festplattenverbindungen sind zwei Dinge zu beachten:

  • Der Keep-Alive-Pod verursacht eine zusätzliche Ressourcennutzung:
    • Er wird auf das Limit für die Anzahl der Pods pro Knoten angerechnet.
    • Dabei wird eine zusätzliche IP-Adresse verwendet, die von Kubernetes zugewiesen wird.
    • Es wird nur eine vernachlässigbare zusätzliche Menge an CPU und Arbeitsspeicher verwendet.
  • Die Sicherheitsrisiken nehmen zu, da die Laufwerke der VM immer an den Knoten angehängt sind, auf dem sich der Keep-Alive-Pod befindet, auch wenn die VM heruntergefahren ist.

BIOS-Firmware verwenden

In GDC dauert das Starten einer VM mit UEFI-Firmware (Unified Extensible Firmware Interface) länger als das Starten einer VM mit BIOS-Firmware.

  1. Damit die Startzeit möglichst kurz ist, legen Sie den Firmwaretyp der VM auf BIOS fest:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
    spec:
      firmware:
        type: bios
        enableSecureBoot:
    '
    
  2. Wenn die VM ausgeführt wird, starten Sie sie neu. Folgen Sie dazu der Anleitung unter VM neu starten.

Vorsichtsmaßnahmen

Der Nachteil der Verwendung von BIOS-Firmware ist, dass sie Secure Boot nicht unterstützt.

Großes Bootlaufwerk verwenden

Um die Startzeit der VM zu minimieren, hängen Sie ein Bootlaufwerk mit einer Größe von mindestens 500 GB an die VM an.