Nachdem Sie ein Maschinen-Image erstellt haben, können Sie damit Kopien der Quell-VM-Instanz erstellen. Weitere Informationen zur Verwendung von Maschinen-Images finden Sie unter Gründe für die Verwendung von Maschinen-Images.
Ein Maschinen-Image enthält die meisten Informationen und Daten, die zum Erstellen einer Instanz erforderlich sind.
Maschinen-Images können nicht geändert werden. Bei der Erstellung einer Instanz aus einem Maschinen-Image können Sie jedoch fast alle Attribute des Maschinen-Images überschreiben.
Sie können Instanzen aus Maschinen-Images mit derGoogle Cloud Console, der Google Cloud CLI oder mit REST erstellen.
Vorbereitung
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Sie können in 60 Minuten maximal 6 VMs aus einem Quell-Maschinen-Image erstellen. Wenn Sie dieses Limit überschreiten, schlägt der Erstellungsvorgang der Instanz fehl und gibt einen Fehler wie den folgenden zurück:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Wenn Sie mehr VMs als das definierte Limit erstellen möchten (6 VMs in 60 Minuten), erstellen Sie zusätzliche Maschinen-Images von der Quell-VM oder kurzlebige Maschinen-Images aus den neuen VMs. Anschließend können Sie die erforderliche Anzahl von VMs aus den neuen Maschinen-Images erstellen.
Sie können mit der Google Cloud Console keine VMs aus Maschinen-Images mit angehängten regionalen nichtflüchtigen Speichern erstellen. Verwenden Sie das Google Cloud CLI oder REST und geben Sie die Parameter
replicaZones
unddeviceName
für jeden angehängten regionalen nichtflüchtigen Speicher an. Weitere Informationen finden Sie unter VM aus einem Maschinen-Image mit Attribut-Überschreibungen erstellen.Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Klicken Sie auf Neue VM-Instanz aus Maschinen-Image.
Wählen Sie das gewünschte Maschinen-Image aus und klicken Sie auf Weiter.
Optional: Passen Sie die VM-Details an.
Klicken Sie auf Erstellen.
VM_NAME
: der Name der zu erstellenden VM.ZONE
: die Zone für die VM.SOURCE_MACHINE_IMAGE_NAME
: das Maschinen-Image, aus dem die VM erstellt werden soll.PROJECT_ID
: Ihre Projekt-ID.ZONE
: die Zone für die VM.VM_NAME
: der Name der zu erstellenden VM.SOURCE_MACHINE_IMAGE_URL
: die vollständige oder teilweise URL des Maschinen-Images, das Sie zum Erstellen der VM verwenden möchten. Beispiel: Sie haben ein Maschinen-Image mit dem Namenmy-machine-image
in einem Projekt namensmyProject
. Dementsprechend sind die folgenden URLs gültig:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Beim Erstellen einer VM aus dem Maschinen-Image können Sie nur die Attribute des angehängten Laufwerks außer dem Namen des Laufwerks überschreiben.
Sie müssen den Parameter
replicaZones
für jeden angehängten regionalen nichtflüchtigen Speicher zusammen mit dendeviceName
des regionalen Laufwerks aus dem Maschinen-Image angeben.Wenn die zum Generieren des Maschinen-Images verwendete Quell-VM und die neue VM zu demselben Projekt und derselben Region gehören, gilt Folgendes:
- Die meisten Attribute der Quell-VM und der neuen VM sind identisch. Zu den abweichenden Attributen gehören z. B. sitzungsspezifische IP-Adressen, die automatisch zugewiesen werden.
- Falls die Quell-VM-Instanz noch vorhanden ist, wenn Sie eine neue VM erstellen, kann die neue VM nicht denselben Namen und dieselbe Zone wie die Quellinstanz verwenden.
Wenn die Quell-VM, die zum Generieren des Maschinen-Images verwendet wurde, und die neue VM zum selben Projekt aber in verschiedenen Regionen gehören, gilt Folgendes:
- Sie müssen alle zonalen und regionalen Ressourcen für die neue VM überschreiben. Wenn Sie beispielsweise eine VM-Instanz aus einem Maschinen-Image erstellen, dessen Quellinstanz zu einer anderen Region gehört, müssen Sie regionale Ressourcen wie das Subnetzwerk und regionale Firewallregeln überschreiben. Globale Ressourcen wie Load-Balancer und Dienstkonten brauchen Sie jedoch nicht zu überschreiben, es sei denn, Sie möchten diese ändern.
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Klicken Sie auf Neue VM-Instanz aus Maschinen-Image.
Wählen Sie das gewünschte Maschinen-Image aus und klicken Sie auf Weiter.
Optional: Passen Sie die VM-Details an.
Klicken Sie auf Erstellen.
Weitere Informationen zur Einrichtung finden Sie unter VM-Instanz aus einem Image erstellen.
PROJECT_ID
: die Projekt-ID.ZONE
: die Zone für die VM.VM_NAME
: der Name der zu erstellenden VM.NEW_MACHINE_TYPE
: der Maschinentyp, den Sie für die VM verwenden möchten.SOURCE_MACHINE_IMAGE_URL
: die vollständige oder Teil-URL des Maschinen-Images, mit dem Sie die Instanz erstellen möchten. Beispiel: Sie haben ein Maschinen-Image mit dem Namenmy-machine-image
in einem Projekt namensmyProject
. Dementsprechend sind die folgenden URLs gültig:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Wenn Sie ein grundlegendes Feld überschreiben, wird das entsprechende grundlegende Feld im Maschinen-Image durch den grundlegenden Feldwert in der Anfrage ersetzt. Zu den grundlegenden Feldern gehören Parameter wie
machineType
undname
. - Wenn Sie ein wiederkehrendes Feld überschreiben, werden alle wiederkehrenden Werte für dieses Attribut durch die entsprechenden Werte in der Anfrage ersetzt.
Wiederkehrende Felder sind in der Regel Attribute vom Typ
list
. Zum Beispiel sinddisks
undnetworkInterfaces
wiederkehrende Felder. - Wenn Sie ein
nested object
(verschachteltes Objekt) überschreiben, wird das Objekt im Maschinen-Image mit der entsprechenden Objektspezifikation in der Anfrage zusammengeführt. Wenn sich ein verschachteltes Objekt in einem wiederkehrenden Feld befindet, wird das Feld gemäß den Regeln für wiederkehrende Felder behandelt. Labels sind eine Ausnahme von dieser Regel und werden als wiederkehrende Felder behandelt, obwohl sie vom Typobject
sind. Gewähren Sie Zugriff auf die Maschinen-Images, die in einem anderen Projekt gespeichert sind.
Berechtigungen können entweder für das Quellprojekt oder das Maschinen-Image erteilt werden. Verwenden Sie den Befehl
gcloud compute machine-images add-iam-policy-binding
, um die Berechtigungen für das Maschinen-Image zu erteilen.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Ersetzen Sie dabei Folgendes:
MACHINE_IMAGE_PROJECT
: die Projekt-ID des Projekts, das das Quellmaschinen-Image enthält.MACHINE_IMAGE_NAME
: der Name des Maschinen-Images, dem Sie die Berechtigungsbindung hinzufügen möchten.ACCOUNT_EMAIL
: die E-Mail-Adresse desserviceAccount
oderuser
, das bzw. der die VM erstellt. Achten Sie darauf, dass die E-Mail so formatiert ist, dass sie das erforderliche Präfix enthält. Das Präfix muss eines der folgenden sein:user:
geben Sie diesen Wert an, wenn die E-Mail-Adresse mit einem Nutzerkonto verknüpft ist. Beispiel:user:user@example.com
serviceAccount:
geben Sie diesen Wert an, wenn die E-Mail-Adresse mit einem Dienstkonto verknüpft ist. Beispiel:serviceAccount:123456789000-compute@developer.gserviceaccount.com
Beispiel
Wenn Sie beispielsweise eine
compute.admin
-Bindung zum Maschinen-Imagemy-machine-image
der E-Mail-Adresse des Dienstkontos123456789000-compute@developer.gserviceaccount.com
hinzufügen möchten, verwenden Sie den folgendengcloud
-Befehl:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Gewähren Sie dem Nutzer, der den Befehl
gcloud compute instances create
ausführt, die Rolle Dienstkontonutzer (roles/iam.serviceAccountUser
) für das Dienstkonto, das dem Maschinen-Image zugeordnet ist.Verwenden Sie den Befehl
gcloud compute instances create
, um eine VM aus einem Maschinen-Image zu erstellen.gcloud compute instances create VM_NAME \ --project=VM_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Ersetzen Sie dabei Folgendes:
VM_PROJECT_ID
: die Projekt-ID des Projekts, in dem Sie die VM erstellen möchten.VM_NAME
: der Name der zu erstellenden VM.ZONE
: Die Zone für die VM.MACHINE_IMAGE_PROJECT
: die Projekt-ID des Projekts, in dem sich das Maschinen-Image befindet.MACHINE_IMAGE_NAME
: das Maschinen-Image, aus dem die VM erstellt werden soll.SERVICE_ACCOUNT_EMAIL
: die E-Mail-Adresse des Dienstkontos, das Sie an Ihre VM anhängen möchten.SUBNET
: Wenn sich das Subnetz und die Instanz im selben Projekt befinden, ersetzen Sie SUBNET durch den Namen eines Subnetzes, das sich in derselben Region wie die Instanz befindet.Wenn Sie ein Subnetz in einem freigegebenen VPC-Netzwerk angeben möchten, ersetzen Sie
SUBNET
durch einen String im folgenden Format:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Ersetzen Sie dabei Folgendes:
HOST_PROJECT_ID
ist die Projekt-ID des freigegebenen VPC-Hostprojekts.REGION
: Die Region des Subnetzes.SUBNET_NAME
: Name des Subnetzes
Beispiel
Mit dem folgenden Befehl wird beispielsweise eine VM mit dem Namen
my-instance
invm-project
in der Zoneus-east1-b
aus einem Maschinen-Image namensmy-machine-image
erstellt.Das Flag
--service-account
gibt das Dienstkonto an, das Sie an die neu erstellte VM anhängen möchten. Wenn Sie dieses Flag nicht angeben, kann das Quelldienstkonto nicht für beide Projekte freigegeben werden und der Vorgang schlägt fehl.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Nachdem die VM erstellt wurde, sieht die Ausgabe in etwa so aus:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Beschränkungen
Die folgenden Einschränkungen gelten, wenn Sie VMs aus Maschinen-Images erstellen:
VM aus einem Maschinen-Image erstellen (kein Überschreiben)
Verwenden Sie diese Methode, wenn Sie eine VM erstellen möchten, die vollständig auf dem Maschinen-Image basiert und keine Änderungen an den Attributen aufweist.
Console
gcloud
Verwenden Sie den Befehl
gcloud compute instances create
zum Erstellen einer Instanz aus einem Maschinen-Image.gcloud compute instances create VM_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Ersetzen Sie dabei Folgendes:
Beispiel
Mit dem folgenden
gcloud
-Befehl können Sie beispielsweise die VMmy-instance
in der Zoneus-east1-b
aus dem Maschinen-Imagemy-machine-image
erstellen.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Nachdem die VM erstellt wurde, sieht die Ausgabe in etwa so aus:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
Erstellen Sie mit der API eine
POST
-Anfrage an die Methodeinstances.insert
. Geben Sie im Anfragetext die folgenden Parameter an:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Ersetzen Sie dabei Folgendes:
VM aus einem Maschinen-Image erstellen (mit Attribut-Überschreibungen)
Wenn Sie eine VM erstellen möchten, die hauptsächlich auf dem Maschinen-Image beruht, jedoch mit einigen Änderungen, können Sie Überschreibungen verwenden. Dafür übergeben Sie beim Erstellen der Instanz Attribute, die die vorhandenen Attribute des Maschinen-Images überschreiben.
Achten Sie bei der Verwendung der Überschreibungsfunktion auf die folgenden Hinweise:
Console
gcloud
Verwenden Sie den Befehl
gcloud compute instances create
, um eine Instanz aus einem Maschinen-Image zu erstellen, und geben Sie dabei die Attribute an, die Sie überschreiben möchten.Mit dem folgenden
gcloud
-Befehl können Sie beispielsweise die VMmy-instance
in der Zoneus-east1-b
aus dem Maschinen-Imagemy-machine-image
erstellen. In diesem Beispiel werden Überschreibungen angewendet, um den Maschinentyp zu ändern, die Hostwartungsrichtlinie zu beenden und einen regionalen nichtflüchtigen Speicher mit dem Namenregional-disk-0
zu konfigurieren.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Mit der
instances.insert()
API können Sie bei der VM-Erstellung die Attribute von Maschinen-Images überschreiben. Geben Sie dafür im Anfragetext alle Felder an, die Sie überschreiben möchten.Erstellen Sie mit der API eine
POST
-Anfrage an die Methodeinstances.insert
. Fügen Sie im Anfragetext den ParametersourceMachineImage
und alle gewünschten Überschreibungen ein. Sie können alle Attribute einfügen, die Sie auch bei der normalen Instanzerstellung festlegen können. Wenn Sie etwa den Maschinentyp ändern möchten, würde Ihr API-Aufruf den ParametermachineType
enthalten.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Ersetzen Sie dabei Folgendes:
Überschreibungsverhalten
Das Überschreibungsverhalten in der API folgt den Regeln des Formats „JSON Merge Patch”, das in RFC 7396 beschrieben ist. Zusammenfassend gelten die folgenden Regeln:
Wenn Sie beispielsweise eine VM aus einem Maschinen-Image erstellen und regionale nichtflüchtige Speicher mit der VM erstellen möchten, verwenden Sie eine Überschreibung für die Laufwerke, sodass Sie die Option
replicaZones
angeben können. Da das Felddisks
ein wiederkehrendes Feld ist, müssen Sie die Laufwerkskonfiguration für alle angehängten Laufwerke und das Bootlaufwerk angeben, nicht nur für die regionalen Laufwerke.POST /compute/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
VM mit einem Maschinen-Image aus einem anderen Projekt erstellen
Wenn Sie eine VM mithilfe eines Maschinen-Image aus einem anderen Projekt erstellen, haben Sie möglicherweise keinen Zugriff auf das Dienstkonto, das diesem Quellprojekt zugeordnet ist. Wenn Sie eine VM aus einem Maschinen-Image erstellen möchten, das sich in einem anderen Projekt befindet, müssen Sie dafür sorgen, dass Sie Zugriff auf das Maschinen-Image haben, und das Dienstkonto-Attribut auf der neuen VM überschreiben.
Wenn Sie ein Maschinen-Image für Projekte freigeben, die ein freigegebenes VPC-Netzwerk verwenden, müssen Sie die Details der freigegebenen VPC beim Erstellen einer VM aus dem Maschinen-Image explizit angeben. Wenn Sie beispielsweise eine VM in einem Nicht-Hostprojekt erstellen, geben Sie die Details der freigegebenen VPC des Hostprojekts mit der Option
--network
,--subnet
oder--network-interface
an.In den folgenden Abschnitten wird beschrieben, wie Sie mithilfe der Google Cloud CLI eine VM aus einem Maschinen-Image erstellen, das sich in einem anderen Projekt befindet.
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-10-14 (UTC).
-