Nachdem Sie ein Maschinen-Image erstellt haben, können Sie damit Kopien der Quell-Compute-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.
Hinweise
-
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 bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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.
-
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) für die Compute-Instanz oder das Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Compute Engine-Instanzen aus Maschinenabbildern benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um eine Instanz aus einem Maschinen-Image zu erstellen:
compute.instances.create
für das Projektcompute.machineImages.useReadOnly
für das Maschinen-Image- Alle zusätzlichen Berechtigungen, die zum Festlegen von Attributen für die Instanz erforderlich sind, z. B. die Berechtigung
setTags
.
Beschränkungen
Beim Erstellen von Instanzen aus Maschinen-Images gelten die folgenden Einschränkungen:
Sie können innerhalb von 60 Minuten maximal 6 Instanzen aus einem Quellmaschinen-Image erstellen. Wenn dieses Limit überschritten wird, schlägt der Vorgang zum Erstellen 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 Instanzen als das festgelegte Limit (6 Instanzen in 60 Minuten) erstellen möchten, erstellen Sie zusätzliche Maschinen-Images aus der Quellinstanz oder kurzlebige Maschinen-Images aus den neuen Instanzen. Anschließend können Sie die erforderliche Anzahl von Instanzen aus den neuen Maschinen-Images erstellen.
Mit der Google Cloud Console können Sie keine Instanzen aus Maschinen-Images mit angehängten regionalen Laufwerken erstellen. Verwenden Sie die Google Cloud CLI oder REST und geben Sie die Parameter
replicaZones
unddeviceName
für jedes angeschlossene regionale Laufwerk an. Weitere Informationen finden Sie unter Instanz aus einem Maschinen-Image mit Attribut-Überschreibungen erstellen.
Instanz aus einem Maschinen-Image erstellen (kein Überschreiben)
Verwenden Sie diese Methode, wenn Sie eine Instanz erstellen möchten, die vollständig auf dem Maschinen-Image beruht, ohne die Attribute zu ändern.
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Wählen Sie im Menü
VM aus… erstellen die Option Maschinen-Images aus.Führen Sie im angezeigten Fenster VM aus Maschinen-Image erstellen die folgenden Schritte aus:
Wählen Sie ein Maschinen-Image aus.
Klicken Sie zum Erstellen und Starten der Instanz auf Erstellen.
Verwenden Sie den Befehl gcloud compute instances create
zum Erstellen einer Instanz aus einem Maschinen-Image.
gcloud compute instances createINSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Ersetzen Sie Folgendes:
INSTANCE_NAME
: der Name der InstanzZONE
: Die Zone für die InstanzSOURCE_MACHINE_IMAGE_NAME
: das Maschinen-Image, aus dem die Instanz erstellt werden soll
Beispiel
Mit dem folgenden gcloud
-Befehl können Sie beispielsweise eine Instanz namens my-instance
in der Zone us-east1-b
aus einem Maschinen-Image namens my-machine-image
erstellen.
gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Nachdem die Instanz 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
Erstellen Sie mit der API eine POST
-Anfrage an die Methode instances.insert
.
Geben Sie im Anfragetext die folgenden Parameter an:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances { "name": "INSTANCE_NAME ", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL " }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: Zone für die Instanz.INSTANCE_NAME
: ein Name für die Instanz.SOURCE_MACHINE_IMAGE_URL
: die vollständige oder teilweise 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
Instanz aus einem Maschinen-Image mit Attribut-Überschreibungen erstellen
Wenn Sie eine Instanz 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:
- Beim Erstellen einer Instanz 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 jedes angeschlossene regionale Laufwerk sowie dendeviceName
des regionalen Laufwerks aus dem Maschinen-Image angeben.Wenn die Quellinstanz (zum Generieren des Maschinen-Images verwendet) und die neue Instanz zum selben Projekt und zur selben Region gehören, gilt Folgendes:
- Die meisten Attribute der Quellinstanz und der neuen Instanz sind identisch. Zu den abweichenden Attributen gehören z. B. sitzungsspezifische IP-Adressen, die automatisch zugewiesen werden.
- Falls die Quellinstanz noch vorhanden ist, wenn Sie eine neue Instanz erstellen, kann die neue Instanz nicht denselben Namen und dieselbe Zone wie die Quellinstanz verwenden.
Wenn die Quellinstanz und die neue Instanz zum selben Projekt gehören, aber in unterschiedlichen Regionen sind, gilt Folgendes:
- Sie müssen alle zonalen und regionalen Ressourcen für die neue Instanz überschreiben. Wenn Sie beispielsweise eine 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.
Wählen Sie im Menü
VM aus… erstellen die Option Maschinen-Images aus.Wählen Sie im angezeigten Fenster VM aus Maschinen-Image erstellen eine Vorlage aus und klicken Sie dann auf
Anpassen.Optional: Geben Sie weitere Konfigurationsoptionen an. Weitere Informationen finden Sie unter Konfigurationsoptionen beim Erstellen einer Instanz.
Klicken Sie zum Erstellen und Starten der Instanz auf Erstellen.
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 VM my-instance
in der Zone us-east1-b
aus dem Maschinen-Image my-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 Namen regional-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
Wenn Sie die Eigenschaften des Maschinen-Images bei der Instanzerstellung überschreiben möchten, erstellen Sie eine POST
-Anfrage an die Methode instances.insert
.
Fügen Sie im Anfragetext den Parameter sourceMachineImage
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 beispielsweise den Maschinentyp überschreiben möchten, würde Ihr API-Aufruf den Parameter machineType
enthalten.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances { "name": "INSTANCE_NAME ", "machineType": "zones/ZONE /machineTypes/NEW_MACHINE_TYPE ", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL " }
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID.ZONE
: Zone für die Instanz.INSTANCE_NAME
: ein Name für die Instanz.NEW_MACHINE_TYPE
: Der Maschinentyp, den Sie für die Instanz verwenden möchten.SOURCE_MACHINE_IMAGE_URL
: die vollständige oder teilweise 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
Überschreibungsverhalten
Das Überschreibungsverhalten in der Compute Engine API folgt den Regeln des Formats „JSON Merge Patch“, das in RFC 7396 beschrieben ist. Zusammenfassend gelten die folgenden Regeln:
- 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.
Wenn Sie beispielsweise eine VM aus einem Maschinen-Image erstellen und regionale Laufwerke mit der VM erstellen möchten, verwenden Sie ein Überschreiben für die Laufwerke, damit Sie die Option replicaZones
angeben können. Da es sich bei dem Feld disks
um ein wiederkehrendes Feld handelt, müssen Sie die Laufwerkkonfiguration für alle angehängten Laufwerke und das Bootlaufwerk angeben, nicht nur für die regionalen Laufwerke.
POST https://compute.googleapis.com/compute/v1/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" ] } } ] }
Instanz mit einem Maschinen-Image aus einem anderen Projekt erstellen
Wenn Sie eine Instanz mit einem Maschinen-Image aus einem anderen Projekt erstellen, haben Sie möglicherweise keinen Zugriff auf das Dienstkonto, das diesem Quellprojekt zugeordnet ist. Wenn Sie eine Instanz 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 Instanz überschreiben.
Wenn Sie ein Maschinen-Image für Projekte freigeben, die ein freigegebenes VPC-Netzwerk verwenden, müssen Sie die Details der freigegebenen VPC explizit angeben, wenn Sie eine Instanz aus dem Maschinen-Image erstellen. Wenn Sie beispielsweise eine Instanz in einem Nicht-Hostprojekt erstellen, geben Sie die Details zur freigegebenen VPC des Hostprojekts mit den Flags --network
, --subnet
oder --network-interface
an.
In den folgenden Abschnitten wird beschrieben, wie Sie mithilfe der Google Cloud CLI eine Instanz aus einem Maschinen-Image erstellen, das sich in einem anderen Projekt befindet.
Gewähren Sie Zugriff auf das Maschinen-Image, das in einem anderen Projekt gespeichert ist.
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 Instanz erstellt. Achten Sie darauf, dass die E-Mail so formatiert ist, dass sie das erforderliche Präfix enthält. Das Präfix muss einer der folgenden Optionen 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 CLI
-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
zum Erstellen einer Instanz aus einem Maschinen-Image.gcloud compute instances create
INSTANCE_NAME \ --project=INSTANCE_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 Folgendes:
INSTANCE_PROJECT_ID
: die Projekt-ID des Projekts, in dem Sie die Instanz erstellen möchtenINSTANCE_NAME
: ein Name für die InstanzZONE
: Die Zone für die InstanzMACHINE_IMAGE_PROJECT
: die Projekt-ID des Projekts, in dem sich das Maschinen-Image befindet.MACHINE_IMAGE_NAME
: das Maschinen-Image, aus dem die Instanz erstellt werden soll.SERVICE_ACCOUNT_EMAIL
: die E-Mail-Adresse des Dienstkontos, das Sie an Ihre Instanz anhängen möchtenSUBNET
: 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 Folgendes:
HOST_PROJECT_ID
: Projekt-ID des freigegebenen VPC-HostprojektsREGION
: 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