Sie können benutzerdefinierte Images aus vorhandenen Quelllaufwerken erstellen und damit VMs erstellen und starten. Benutzerdefinierte Images sind ideal, wenn Sie ein nichtflüchtiges Bootlaufwerk in einem bestimmten Zustand erstellt und geändert haben und diesen Zustand zum Erstellen von VMs speichern müssen. Wenn Sie ein benutzerdefiniertes Image erstellen und speichern, das Sie in Zukunft als neues VM-Image verwenden können, müssen Sie die Einrichtungsschritte später nicht wiederholen.
Hinweise
Wenn Sie Befehle dergdcloud-Befehlszeile (Command-Line Interface, CLI) verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben.
Für alle Befehle für die GDC-Appliance ohne Internetverbindung wird die gdcloud- oder kubectl-Befehlszeile verwendet. Außerdem ist eine Linux-Umgebung 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:
Suchen Sie den Namen des Management API-Servers oder fragen Sie Ihren Plattformadministrator danach.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.
Verwenden Sie den Pfad, um
MANAGEMENT_API_SERVER{"</var>"}}in dieser Anleitung zu ersetzen.
Berechtigungen und Zugriff anfordern
Zum Erstellen eines benutzerdefinierten Images benötigen Sie Zugriff auf VM-Images auf Projektebene. Folgen Sie der Anleitung für Ihren Projekt-IAM-Administrator, um Ihnen die Rolle „Project VirtualMachine Image Admin“ (project-vm-image-admin) im Namespace des Projekts zuzuweisen, in dem sich die VM befindet. Wenn Sie die GDC-Konsole oder die gdcloud CLI zum Erstellen eines Images verwenden, benötigen Sie außerdem die Rolle „Project VirtualMachine Admin“ (project-vm-admin) und die Rolle „Project Viewer“ (project-viewer).
Benutzerdefiniertes Image erstellen
In diesem Abschnitt wird beschrieben, wie Sie ein benutzerdefiniertes Image auf einer Linux-VM erstellen.
VM für ein Image vorbereiten
Sie können ein Image von einem Laufwerk erstellen, während es an eine laufende VM angehängt ist. Das Image wird jedoch zuverlässiger, wenn Sie die VM in einen Zustand versetzen, den das Image leichter erfassen kann.
Schreiben von Daten in den nichtflüchtigen Speicher minimieren
Verwenden Sie eines der folgenden Verfahren, um die Schreibvorgänge auf dem Laufwerk zu reduzieren. Beenden Sie die VM oder minimieren Sie die Schreibvorgänge auf das Laufwerk:
- Beenden Sie die VM, sodass sie herunterfahren und das Schreiben von Daten auf den nichtflüchtigen Speicher beenden kann.
Wenn Sie Ihre VM nicht beenden können, bevor Sie das Image erstellen, minimieren Sie die Schreibvorgänge auf das Laufwerk und synchronisieren Sie Ihr Dateisystem. So minimieren Sie das Schreiben in Ihren nichtflüchtigen Speicher:
- Pausieren Sie alle Anwendungen oder Betriebssystemprozesse, die Daten in den nichtflüchtigen Speicher schreiben. Leeren Sie die Anwendungsdaten auf das Laufwerk, falls erforderlich. Andere Anwendungen haben möglicherweise ähnliche Prozesse.
- Beenden Sie das Schreiben von Daten auf den nichtflüchtigen Speicher durch Anwendungen.
- Führen Sie
sudo syncaus.
Image erstellen
So erstellen Sie Laufwerk-Images aus einem nichtflüchtigen Speicher, auch wenn dieser mit einer VM verbunden ist:
Console
Wählen Sie ein Projekt aus.
Klicken Sie im Navigationsmenü auf Virtuelle Maschinen > Images.
Klicken Sie auf Image erstellen.
Geben Sie einen eindeutigen Namen für das Bild ein. Der Name darf maximal 35 Zeichen lang sein.
Geben Sie eine Version ein, die dem Bildnamen hinzugefügt werden soll.
Wählen Sie im Feld Quelllaufwerk ein Laufwerk aus.
Geben Sie im Feld Mindestlaufwerkgröße eine Laufwerkgröße ein.
Geben Sie eine Beschreibung des Bildes ein.
Klicken Sie auf Erstellen.
Das Bild wird in der Liste der Bilder angezeigt.
API
Alle
VirtualMachineDisk-Objekte auflisten:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECTWählen Sie ein
VirtualMachineDisk-Objekt aus, das als Quelllaufwerk für das neue Image verwendet werden soll.Prüfen Sie, ob das VM-Laufwerk an eine VM angehängt ist:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \ DISK_NAME -o jsonpath='{.status.virtualMachineAttachments}'Beispielausgabe, die zeigt, dass ein Laufwerk an eine VM angehängt ist:
[{"autoDelete":true,"nameRef":{"name":"vm1"},"uid":"...."}]- Wenn die Ausgabe einen Wert für
"name"zurückgibt, ist das Laufwerk an eine VM angehängt, die durch das Feldnameangegeben wird. In dieser Beispielausgabe ist dasvm1. Prüfen Sie den Ausführungsstatus der VM. - Wenn die Ausgabe leer ist, fahren Sie mit
sizederVirtualMachineDiskabrufen fort.
- Prüfen Sie
den Ausführungsstatus der VM. Wenn der Status nicht
Stoppedist, beenden Sie die VM und fahren Sie mit dem Erstellen desVirtualMachineImagefort.
- Wenn die Ausgabe einen Wert für
sizevonVirtualMachineDiskabrufen, um das Bild zu erstellen:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \ DISK_NAME -o jsonpath='{.spec.size}'Erstellen Sie ein
VirtualMachineImageImport-Objekt auf dem Management API-Server:kubectl --kubeconfig MANAGEMENT_API_SERVER \ apply -n PROJECT -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineImageImport metadata: name: VM_IMAGE_IMPORT_NAME spec: source: diskRef: name: DISK_NAME imageMetadata: name: IMAGE_NAME operatingSystem: OS_NAME minimumDiskSize: MINIMUM_DISK_SIZE EOFPrüfen Sie, ob der Bildimport abgeschlossen ist und der Status
Readylautet:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimageimports.virtualmachine.gdc.goog --namespace PROJECT \ VM_IMAGE_IMPORT_NAME -o jsonpath='{.status}'Wenn der Import abgeschlossen ist, sollte der Status so aussehen:
{ "conditions": [ { "lastTransitionTime": "", "message": "", "observedGeneration": 1, "reason": "ImportJobComplete", "status": "True", "type": "Ready" } ], "imageName": IMAGE_NAME }Prüfen Sie, ob das Image erstellt wurde:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimages.virtualmachine.gdc.goog --namespace PROJECT \ CREATED_IMAGE_NAMEErsetzen Sie die Variablen anhand der folgenden Definitionen.
Variable Definition MANAGEMENT_API_SERVERDie Datei kubeconfigdes Management API-Servers.PROJECTDas GDC-Projekt, in dem das Image erstellt werden soll. DISK_NAMEDer Name des Quelllaufwerks, z. B. vm1-boot-disk.VM_IMAGE_IMPORT_NAMEDer Name des VM-Image-Imports. Der Name darf maximal 35 Zeichen lang sein. IMAGE_NAMEDer Name des erstellten Bildes, z. B. custom-image.OS_NAMEDer Name des Betriebssystems des Images muss einer der folgenden sein: ubuntu-2004,windows-2019oderrhel-8.MINIMUM_DISK_SIZEDie Mindestlaufwerkgröße beim Importieren von VM-Images, z. B. 20G:
minimumDiskSize, muss immer größer oder gleich der Größe des Quell-Bootlaufwerks sein.CREATED_IMAGE_NAMEDer Name des erstellten Bildes. Der Name des erstellten Bildes muss eindeutig sein. Es darf sich nicht um einen Bildnamen handeln, der bereits im Projekt vorhanden ist.