Bulk Instance API verwenden


In diesem Dokument wird die Bulk Instance API beschrieben. Außerdem wird erläutert, wie Sie damit mehrere homogene VMs erstellen können, die voneinander unabhängig sind.

Die Verwendung der Bulk Instance API unterscheidet sich von der Zusammenfassung mehrerer API-Anfragen zum Einfügen von Instanzen in einer HTTP-Anfrage, indem API-Anfragen im Batch verarbeitet werden. Außerdem werden Instanzen, die mit der Bulk Instance API erstellt wurden, nicht für Sie verwaltet.

In der folgenden Tabelle wird die instances.insert API mit der instances.bulkInsert API verglichen.

Funktionsweise instances.insert instances.bulkInsert
Zonenauswahl
Automatische Auswahl anhand von Überlegungen wie Ressourcenverfügbarkeit und Kontingent
Manuell Automatisch bei Verwendung des regionalen Endpunkts
Vorabvalidierung
Anfrage schlägt sofort fehl, wenn sie nicht möglich ist
Nein Mit Kapazität und Kontingent
Generierung des VM-Namens
Basierend auf einem angegebenen Namensmuster automatisch generiert
Manuell Optional automatisch generiert
Automatisches Rollback
Anfrage wird automatisch zurückgesetzt, falls die Zielanzahl von VMs nicht von Compute Engine erstellt werden kann
Nein Optional aktiviert
API-Ratenbegrenzung
Auswirkungen von Anfragen auf die API-Ratenbegrenzung
Pro Instanzanfrage Pro Bulk-Instanz-Anfrage

Wenn Sie die VMs von Compute Engine verwalten lassen möchten, verwenden Sie verwaltete Instanzgruppen.


Hinweise

Wenn Sie die Anleitung in diesem Dokument verwenden, um die Bulk Instance API zu verwenden, beachten Sie Folgendes:

  • Mit der Bulk Instance API können Sie regionale oder zonale Anfragen ausführen. Wenn die Anfrage regional ist, ermittelt Compute Engine die Zone, auf der die VMs basierend auf den Zonen mit verfügbarer Hardware erstellt werden sollen. Dabei werden die verfügbare Kapazität in jeder Zone sowie alle Ihre Reservierungen berücksichtigt. Für diese regionalen Anfragen bestimmt Compute Engine eine einzelne Zone, in der die VMs platziert werden. Senden Sie separate Anfragen an diese Zonen, um VMs in verschiedenen Zonen zu platzieren. Dieses Dokument enthält ein Pseudocode-Beispiel, das dies veranschaulicht.

  • Anfragen an die Bulk Instance API nutzen dieselbe API-Ratenbegrenzung wie Anfragen zum Erstellen einzelner VMs. Zum Zweck der Ratenbegrenzung wird jede Bulk-Instanz-API-Anfrage als eine einzelne Anfrage gezählt, unabhängig von der Anzahl der erstellten VMs. Wenn Ihr Kontingent nicht ausreicht, schlägt die Anfrage sofort fehl und Compute Engine erstellt keine VMs.

  • Wenn Sie die Anzeige von VMs in der Google Cloud Console oder für die Verwendung von Cloud Monitoring vereinfachen möchten, können Sie die VMs einer nicht verwalteten Instanzgruppe hinzufügen. Nicht verwaltete Instanzgruppen ermöglichen keine Verwaltung des VM-Lebenszyklus oder des Load-Balancing. Wenn Sie die VMs gruppieren möchten, ohne eine nicht verwaltete Instanzgruppe zu verwenden, können Sie Labels verwenden.


Preise

Für die Verwendung der Bulk Instance API fallen keine zusätzlichen Kosten an, wenn Sie den Anleitungen in diesem Dokument folgen. Die Abrechnung beginnt wie beim Erstellen einzelner VMs, wenn Sie die VMs erstellen.

Wenn Compute Engine bei Verwendung der Bulk Instance API keine VMs erstellt, werden Ihnen nur die VMs in Rechnung gestellt, die von Compute Engine erfolgreich erstellt wurden.


Hinweis


VMs mit der Bulk Instance API erstellen

Mit den folgenden Verfahren können Sie die Bulk Instance API verwenden, um mehrere VMs in einer Region oder Zone zu erstellen.

Mehrere VMs in einer Region erstellen

Die folgenden Verfahren zeigen, wie mit der Bulk Instance API mehrere VMs in einer bestimmten Region erstellt werden. Dabei bestimmt Compute Engine die Zone.

Wenn Sie einen Maschinentyp oder Support für zusätzliche Hardware wie eine GPU oder eine lokale SSD angeben, werden die VMs in Compute Engine in einer Zone innerhalb der Region platziert, die den Maschinentyp und die zusätzliche Hardware unterstützt.

gcloud

Verwenden Sie den Befehl gcloud compute instances bulk create mit den erforderlichen Flags, um mehrere VMs in einer Region zu erstellen.

gcloud compute instances bulk create \
  ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] )\
  --region=REGION \
  --count=COUNT \
  [ --min-count=MIN_COUNT ]

Dabei gilt:

  • NAME_PATTERN ist das Namensmuster für die VMs. Verwenden Sie eine Sequenz von Hash-Zeichen (#) für Compute Engine, um sie durch eine Zahlenfolge zu ersetzen. Wenn Sie z. B. vm-# für das Namensmuster verwenden, werden VMs mit den Namen vm-1, vm-2 usw. bis zu der durch --count angegebenen Anzahl von VMs erzeugt, die kleiner oder gleich der Anzahl von VMs sein muss, die das Namensmuster zulässt.

    Bei Verwendung eines Namensmusters versucht Compute Engine, Namenskonflikte zu vermeiden. Dazu werden die Namen vorhandener VMs geprüft, die aus vorherigen Anfragen erstellt wurden. Darüber hinaus können auch Namenskonflikte auftreten, wenn Sie das globale DNS verwenden. Wechseln Sie zu zonalem DNS, um Namenskonflikte zu vermeiden, die das globale DNS verwenden. Wenn Sie nicht zu zonalem DNS wechseln können, vermeiden Sie die Verwendung desselben Namensmusters in verschiedenen Regionen.

  • PREDEFINED_NAMES ist eine Liste vordefinierter Namen für die zu erstellenden VMs. Wenn Sie dieses Flag verwenden und COUNT angeben, muss COUNT der Anzahl der angegebenen Namen entsprechen.

  • REGION ist die Region, in der die VMs erstellt werden sollen.

  • COUNT ist die Anzahl der zu erstellenden VMs. Diese muss kleiner oder gleich der Anzahl der von NAME_PATTERN zulässigen VMs sein. Wenn Sie --predefined-names verwenden, müssen Sie COUNT nicht angeben. In diesem Fall muss sie der Anzahl der angegebenen Namen entsprechen.

  • MIN_COUNT ist ein optionales Flag, das die Mindestzahl der zu erstellenden VMs angibt. In der folgenden Tabelle wird das Verhalten der Anfrage beschrieben, je nachdem, wie Sie dieses Flag festlegen:

    Einstellung Beschreibung
    Nicht definiert Der Standardwert ist COUNT. Wenn Compute Engine keine COUNT-VMs erstellen kann, wird die Anfrage nicht validiert und es werden keine VMs erstellt.
    Legen Sie 1 fest. Compute Engine erstellt so viele VMs wie möglich und maximal COUNT.
    Größer als 1 und kleiner als COUNT Compute Engine versucht, mindestens MIN_COUNT VMs bis zu maximal COUNT VMs zu erstellen. Die Anfrage ist erfolgreich, wenn Compute Engine mindestens MIN_COUNT VMs erstellt.

API

Verwenden Sie die Methode instances.bulkInsert mit den erforderlichen Parametern, um mehrere VMs in einer Region zu erstellen.

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert

{
  ...
  "namePattern": "NAME_PATTERN",
  "perInstanceProperties": {
    "PREDEFINED_NAME_1": {},
    "PREDEFINED_NAME_2": {},
    ...
  },
  "count": COUNT,
  "minCount": MIN_COUNT,
  ...
}

Dabei gilt:

  • PROJECT_ID: die Projekt-ID.

  • REGION ist die Region, in der die VMs erstellt werden sollen.

  • NAME_PATTERN ist das Namensmuster für die VMs. Geben Sie entweder diesen Wert oder perInstanceProperties an. Verwenden Sie eine Abfolge von Hash-Zeichen (#) für Compute Engine, um sie durch eine Zahlenfolge zu ersetzen. Wenn Sie z. B. vm-# für das Namensmuster verwenden, werden VMs mit den Namen vm-1, vm-2 usw. bis zu der durch --count angegebenen Anzahl von VMs erzeugt, die kleiner oder gleich der Anzahl von VMs sein muss, die das Namensmuster zulässt.

    Bei Verwendung eines Namensmusters versucht Compute Engine, Namenskonflikte zu vermeiden. Dazu werden die Namen vorhandener VMs geprüft, die aus vorherigen Anfragen erstellt wurden. Darüber hinaus können auch Namenskonflikte auftreten, wenn Sie das globale DNS verwenden. Wechseln Sie zu zonalem DNS, um Namenskonflikte zu vermeiden, die das globale DNS verwenden. Wenn Sie nicht zu zonalem DNS wechseln können, vermeiden Sie die Verwendung desselben Namensmusters in verschiedenen Regionen.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2 ist eine Liste vordefinierter Namen für die zu erstellenden VMs. Geben Sie entweder diesen Wert oder namePattern an. Wenn Sie dieses Flag verwenden und COUNT angeben, muss COUNT der Anzahl der angegebenen Namen entsprechen.

  • COUNT ist die Anzahl der zu erstellenden VMs. Diese muss kleiner oder gleich der Anzahl der von NAME_PATTERN zulässigen VMs sein. Wenn Sie perInstanceProperties verwenden, müssen Sie COUNT nicht angeben. In diesem Fall muss sie der Anzahl der angegebenen Namen entsprechen.

  • MIN_COUNT ist ein optionales Flag, das die Mindestzahl der zu erstellenden VMs angibt. In der folgenden Tabelle wird das Verhalten der Anfrage beschrieben, je nachdem, wie Sie dieses Flag festlegen:

    Einstellung Beschreibung
    Nicht definiert Der Standardwert ist COUNT. Wenn Compute Engine keine COUNT-VMs erstellen kann, wird die Anfrage zurückgesetzt.
    Legen Sie 1 fest. Compute Engine erstellt so viele VMs wie möglich und maximal COUNT.
    Größer als 1 und kleiner als COUNT Compute Engine versucht, mindestens MIN_COUNT VMs bis zu maximal COUNT VMs zu erstellen. Die Anfrage ist erfolgreich, wenn Compute Engine mindestens MIN_COUNT VMs erstellt.

Mehrere VMs in einer bestimmten Zone erstellen

Die folgenden Verfahren zeigen, wie Sie mit der Bulk Instance API mehrere VMs in einer Zone erstellen.

gcloud

Verwenden Sie den Befehl gcloud compute instances bulk create mit den erforderlichen Flags, um mehrere VMs in einer Zone zu erstellen.

gcloud compute instances bulk create \
  ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] )\
  --zone=ZONE \
  --count=COUNT \
  [ --min-count=MIN_COUNT ]

Dabei gilt:

  • NAME_PATTERN ist das Namensmuster für die VMs. Verwenden Sie eine Sequenz von Hash-Zeichen (#) für Compute Engine, um sie durch eine Zahlenfolge zu ersetzen. Wenn Sie z. B. vm-# für das Namensmuster verwenden, werden VMs mit den Namen vm-1, vm-2 usw. bis zu der durch --count angegebenen Anzahl von VMs erzeugt, die kleiner oder gleich der Anzahl von VMs sein muss, die das Namensmuster zulässt.

    Bei Verwendung eines Namensmusters versucht Compute Engine, Namenskonflikte zu vermeiden. Dazu werden die Namen vorhandener VMs geprüft, die aus vorherigen Anfragen erstellt wurden. Darüber hinaus können auch Namenskonflikte auftreten, wenn Sie das globale DNS verwenden. Wechseln Sie zu zonalem DNS, um Namenskonflikte zu vermeiden, die das globale DNS verwenden. Wenn Sie nicht zu zonalem DNS wechseln können, vermeiden Sie die Verwendung desselben Namensmusters in verschiedenen Regionen.

  • PREDEFINED_NAMES ist eine Liste vordefinierter Namen für die zu erstellenden VMs. Wenn Sie dieses Flag verwenden und COUNT angeben, muss COUNT der Anzahl der angegebenen Namen entsprechen.

  • ZONE ist die Zone, in der die VMs erstellt werden sollen.

  • COUNT ist die Anzahl der zu erstellenden VMs. Diese muss kleiner oder gleich der Anzahl der von NAME_PATTERN zulässigen VMs sein. Wenn Sie --predefined-names verwenden, müssen Sie COUNT nicht angeben. In diesem Fall muss sie der Anzahl der angegebenen Namen entsprechen.

  • MIN_COUNT ist ein optionales Flag, das die Mindestzahl der zu erstellenden VMs angibt. In der folgenden Tabelle wird das Verhalten der Anfrage beschrieben, je nachdem, wie Sie dieses Flag festlegen:

    Einstellung Beschreibung
    Nicht definiert Der Standardwert ist COUNT. Wenn Compute Engine keine COUNT-VMs erstellen kann, wird die Anfrage zurückgesetzt.
    Legen Sie 1 fest. Compute Engine erstellt so viele VMs wie möglich und maximal COUNT.
    Größer als 1 und kleiner als COUNT Compute Engine versucht, mindestens MIN_COUNT VMs bis zu maximal COUNT VMs zu erstellen. Die Anfrage ist erfolgreich, wenn Compute Engine mindestens MIN_COUNT VMs erstellt.

API

Verwenden Sie die Methode instances.bulkInsert mit den erforderlichen Parametern, um mehrere VMs in einer Zone zu erstellen.

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  ...
  "namePattern": "NAME_PATTERN",
  "perInstanceProperties": {
    "PREDEFINED_NAME_1": {},
    "PREDEFINED_NAME_2": {},
    ...
  },
  "count": COUNT,
  "minCount": MIN_COUNT,
  ...
}

Dabei gilt:

  • PROJECT_ID: die Projekt-ID.

  • ZONE ist die Zone, in der die VMs erstellt werden sollen.

  • NAME_PATTERN ist das Namensmuster für die VMs. Geben Sie entweder diesen Wert oder perInstanceProperties an. Verwenden Sie eine Abfolge von Hash-Zeichen (#) für Compute Engine, um sie durch eine Zahlenfolge zu ersetzen. Wenn Sie z. B. vm-# für das Namensmuster verwenden, werden VMs mit den Namen vm-1, vm-2 usw. bis zu der durch --count angegebenen Anzahl von VMs erzeugt, die kleiner oder gleich der Anzahl von VMs sein muss, die das Namensmuster zulässt.

    Bei Verwendung eines Namensmusters versucht Compute Engine, Namenskonflikte zu vermeiden. Dazu werden die Namen vorhandener VMs geprüft, die aus vorherigen Anfragen erstellt wurden. Darüber hinaus können auch Namenskonflikte auftreten, wenn Sie das globale DNS verwenden. Wechseln Sie zu zonalem DNS, um Namenskonflikte zu vermeiden, die das globale DNS verwenden. Wenn Sie nicht zu zonalem DNS wechseln können, vermeiden Sie die Verwendung desselben Namensmusters in verschiedenen Regionen.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2 ist eine Liste vordefinierter Namen für die zu erstellenden VMs. Geben Sie entweder diesen Wert oder namePattern an. Wenn Sie dieses Flag verwenden und COUNT angeben, muss COUNT der Anzahl der angegebenen Namen entsprechen.

  • COUNT ist die Anzahl der zu erstellenden VMs. Diese muss kleiner oder gleich der Anzahl der von NAME_PATTERN zulässigen VMs sein. Wenn Sie perInstanceProperties verwenden, müssen Sie COUNT nicht angeben. In diesem Fall muss sie der Anzahl der angegebenen Namen entsprechen.

  • MIN_COUNT ist ein optionales Flag, das die Mindestzahl der zu erstellenden VMs angibt. In der folgenden Tabelle wird das Verhalten der Anfrage beschrieben, je nachdem, wie Sie dieses Flag festlegen:

    Einstellung Beschreibung
    Nicht definiert Der Standardwert ist COUNT. Wenn Compute Engine keine COUNT-VMs erstellen kann, wird die Anfrage zurückgesetzt.
    Legen Sie 1 fest. Compute Engine erstellt so viele VMs wie möglich und maximal COUNT.
    Größer als 1 und kleiner als COUNT Compute Engine versucht, mindestens MIN_COUNT VMs bis zu maximal COUNT VMs zu erstellen. Die Anfrage ist erfolgreich, wenn Compute Engine mindestens MIN_COUNT VMs erstellt.

Status von VMs prüfen, die mit der Bulk Instance API erstellt wurden

Nachdem Sie die Bulk Instance API zum Erstellen mehrerer VMs verwendet haben, gehen Sie so vor, um den Status der Anfrage an die Bulk Instance API zu prüfen oder den Status einer einzelnen VM zu prüfen, die Teil der Anfrage an die Bulk Instance API war.

Status einer Bulk-Instanzanfrage prüfen

Bei der Überprüfung des Status einer Anfrage an die Bulk Instance API gibt der Bulk-Vorgang nur DONE zurück, wenn Compute Engine entweder die Mindestanzahl der angegebenen VMs erfolgreich erstellt oder ein Rollback der Anfrage durchgeführt hat.

Informationen zum Prüfen des Status einer Anfrage an die Bulk Instance API finden Sie unter API-Antworten verarbeiten.

Status einer einzelnen VM prüfen

Die Bulk Instance API erstellt Operations für jede VM, die den VM-Namen und den Erstellungsstatus enthält.

Das folgende Verfahren zeigt, wie Sie den Status einer einzelnen VM prüfen können, die Compute Engine als Teil einer Gruppe von VMs erstellt hat. Die Vorgehensweise basiert auf einer Anfrage, die an die Bulk Instance API gesendet wird.

gcloud

  1. Von der Operation-Anfrage, die von der Anfrage an die Bulk Instance API zurückgegeben wurde, erhalten Sie den Wert des Attributs operationGroupId.

  2. Verwenden Sie das Attribut operationGroupId als Filter mit dem Befehl gcloud compute operations list, um nach allen Vorgängen und allen Zonen im Projekt nach VMs zu suchen, die mit der regionalen oder zonalen Anfrage an die Bulk Instance API verbunden sind:

    gcloud compute operations list \
      --filter=(operationGroupId=OPERATION_GROUP_ID)
    
  3. Führen Sie einen der folgenden Schritte aus, um die restlichen Attribute der VM zu erhalten:

    • In der Liste der Vorgänge steht targetLink für den Pfad der VM. Verwenden Sie die Methode gcloud compute instances describe mit diesem Pfad als Namen der VM, um die vollständigen Attribute der VM zu erhalten:

      gcloud compute instances describe VM_NAME
      
    • Verwenden Sie die Methode gcloud compute instances list mit einem Filter, der die Namen der VMs aus der Liste der Vorgänge enthält:

      gcloud compute instances list VM_NAME \
        --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      
    • Verwenden Sie den Befehl gcloud compute instances list, um die Attribute der VMs aus allen Zonen und Regionen abzurufen. Filtern Sie entweder nach einem Label, das für die Instanzen eindeutig ist, oder nach Namen der Nutzer:

      gcloud compute instances list \
        --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      

API

  1. Von der Operation-Anfrage, die von der Anfrage an die Bulk Instance API zurückgegeben wurde, erhalten Sie den Wert des Attributs operationGroupId.

  2. Verwenden Sie das Attribut operationGroupId als Filter, um die Liste der VM-Vorgänge abzurufen, die der regionalen oder zonalen Anfrage an die Bulk Instance API zugeordnet sind:

    • Wenn Sie eine regionale Anfrage an die Bulk Instance API gesendet haben, verwenden Sie die Methode globalOperations.aggregatedList, um alle Vorgänge und alle Zonen im Projekt zu durchsuchen:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
      
    • Wenn Sie eine zonale Anfrage an die Bulk Instance API gesendet haben, können Sie mit der Methode zoneOperations.get die Vorgänge in dieser Zone auflisten:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
      
  3. Führen Sie einen der folgenden Schritte aus, um die restlichen Attribute der VM zu erhalten:

    • In der Liste der Vorgänge steht targetLink für den Pfad der VM. Verwenden Sie die Methode instances.get mit diesem Pfad als Namen der VM, um die vollständigen Attribute der VM zu erhalten:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
      
    • Verwenden Sie die Methode instances.get mit einem Filter, der die Namen der VMs aus der Liste der Vorgänge enthält:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      
    • Verwenden Sie die Methode instances.aggregatedList, um die Attribute der VMs aus allen Zonen und Regionen abzurufen. Filtern Sie entweder nach einem Label, das für die Instanzen eindeutig ist, oder nach Namen der Nutzer:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      

Pseudocode-Beispiele

Die folgenden Pseudocodes zeigen, wie Anfragen an die Bulk Instance API angepasst werden.

Mehrere VMs in verschiedenen Zonen einer Region erstellen

Wenn Sie die Bulk Instance API zum Erstellen mehrerer VMs verwenden, werden alle VMs von Compute Engine standardmäßig in derselben Zone platziert. Im Folgenden wird ein Pseudocode beschrieben, der zeigt, wie Sie bis zu 1.000 VMs erstellen, die sich in verschiedenen Zonen einer Region befinden können.

  1. Geben Sie die Anzahl der zu erstellenden VMs an und initialisieren Sie einen Zähler, um die Anzahl der erstellten VMs zu verfolgen.

    nTarget = 1000
    nCreated = 0
    
  2. Initialisieren Sie eine Datenstruktur mit den verfügbaren Zonen innerhalb einer Region. Mit der Methode zones.list erhalten Sie eine Liste der für Ihr Projekt verfügbaren Zonen.

    zones = list of zones in region
    
  3. Iterieren Sie die Liste der Zonen. Rufen Sie bei jedem Durchlauf die Bulk API mit minCount gleich 1 auf und aktualisieren Sie die Anzahl der insgesamt erstellten VMs. Wenn minCount gleich 1 ist, erstellt Compute Engine so viele VMs wie möglich, bis zu nTarget.

    for each zone in zones:
      call bulk API: zone=zone, minCount=1, count=(nTarget - nCreated)
      nCreated += (# of VMs created)
      if (vmsCreated == targetN)
        break
    

Mehrere VMs in einer Zone in einer beliebigen Region erstellen

Im folgenden Pseudocode wird beschrieben, wie mit der Bulk Instance API bis zu 1.000 VMs in einer Zone innerhalb der angegebenen Region erstellt werden. Beim Versuch, mehrere VMs in einer Region aus einer festgelegten Reihe von Regionen zu erstellen, prüft die Anfrage zuerst ihre Kapazität. Wenn nicht genug Kapazitäten vorhanden sind, schlägt die Anfrage sofort fehl und versucht es mit der nächsten Region in der Gruppe.

  1. Geben Sie die Anzahl der VMs an, die innerhalb einer Zone erstellt werden sollen.

    nTarget = 1000
    
  2. Geben Sie die Regionen an, in denen die VMs erstellt werden sollen.

    acceptableRegions = ["us-central1", "us-east1", "us-west1"]
    
  3. Wiederholen Sie die Regionen und versuchen Sie, die VMs in jeder Region zu erstellen, bis sie erfolgreich sind.

    for region in acceptableRegions:
      call bulk API: region=region, count=nTarget
      if request succeeds and the operation succeeds:
        break
    

Mehrere VMs in einer Zone auf einem Maschinentyp erstellen

Der folgende Pseudocode beschreibt, wie mit der Bulk Instance API mehrere VMs in einer Zone auf einem der angegebenen Maschinentypen erstellt werden. Beim Versuch, mehrere VMs mit demselben Maschinentyp zu erstellen, prüft die Anfrage zuerst die Verfügbarkeit dieser Maschinentypen. Wenn nicht genügend verfügbarer Maschinentyp vorhanden ist, schlägt die Anfrage sofort fehl und versucht es mit dem nächsten Maschinentyp noch einmal.

  1. Geben Sie die Anzahl der zu erstellenden VMs und die Region an, in der sie erstellt werden sollen.

    nTarget = 1000
    region = "us-central1"
    
  2. Geben Sie die Maschinenfamilien an, für die die VMs erstellt werden sollen.

    acceptableMachineFamilies = ["n2","c2","e2","n1"]
    
  3. Iterieren Sie durch die Maschinentypen und versuchen Sie, die VMs so lange zu erstellen, bis dies erfolgreich ist.

    for family in acceptableMachineFamilies:
      call bulk APIs: region=region, count=nTarget, machineFamily=family
      if request succeeds and the operation succeeds:
        break
    

Mehr als 1.000 VMs in einer Zone erstellen

Wenn Sie die Bulk Instance API zum Erstellen von VMs verwenden, können Sie mit jeder Anfrage nur 1.000 VMs erstellen. Im folgenden Pseudocode wird beschrieben, wie mehr als 1.000 VMs in einer Zone durch Senden mehrerer Anfragen erstellt werden.

  1. Geben Sie die Anzahl der zu erstellenden VMs, einen Zähler für die Gesamtzahl der erstellten VMs, die Region, in der die VMs erstellt werden und eine Variable zum Speichern der Zone an, in der Compute Engine die VMs erstellt.

    nTarget = 10000
    nCreated = 0
    region = "us-central1"
    targetZone = ""
    
  2. Senden Sie eine erste Anfrage, um 1.000 VMs zu erstellen, die von der Anfrage zurückgegebene Zone zu speichern und den Zähler der Anzahl der erstellten VMs zu aktualisieren.

    call bulk API: region=region, count=1000
    targetZone = zone chosen by bulk API
    nCreated += # of VMs created
    
  3. Stellen Sie weitere Anfragen zum Erstellen von bis zu 1.000 VMs gleichzeitig in der Zone, bis Compute Engine die festgelegte Anzahl von VMs erstellt.

    while(nTarget - nCreated > 0):
      call bulk API: zone=targetZone, count=1000
      nCreated += # of VMs created
    

Detaillierte Informationen zu mehreren VMs ansehen

Im Folgenden wird Pseudocode beschrieben, mit dem Sie die Details von Instanzen abrufen können, die mithilfe vordefinierter Namen mit der Bulk Instance API erstellt wurden:

  1. Geben Sie die Anzahl der zu erstellenden VMs, die Zone, in der sie erstellt werden sollen, sowie eine Datenstruktur zur Speicherung der Namen an.

    nTarget = 1000
    targetZone = "us-central-1a"
    names = []
    
  2. Generieren Sie die Musternamen für die VMs und fügen Sie die Namen der Datenstruktur hinzu.

    for n in range(0,1000):
      names.push("instance-%d".format(n))
    
  3. Erstellen Sie die VMs und geben Sie die Namen mit perInstanceProperties an.

    call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
    
  4. Rufen Sie die Details der VMs mithilfe der Methode instances.list mit einem Filter für die Namen der VMs ab, für die Sie die Details abrufen möchten.

    instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
    

Beschränkungen

Lesen Sie die folgenden Einschränkungen, bevor Sie die API für die Instanz verwenden:

  • Für jedes Projekt ist die Anzahl der gleichzeitigen Vorgänge mit der Bulk Instance API auf 10 beschränkt.

  • Für jede Anfrage können Sie maximal 1.000 VMs erstellen. Ein Beispiel für die Ausgabe mehrerer Anfragen zum Erstellen von mehr als 1.000 VMs finden Sie in diesem Dokument.

  • Alle VM-Attribute, mit Ausnahme der Namen, müssen identisch sein.

  • Sie können keine VM-Attribute verwenden, die sich zwischen VMs überschneiden. Dazu gehören unter anderem:

    • Benutzerdefinierte Hostnamen
    • Statische externe IP-Adressen
    • Statische interne IP-Adressen
  • Sie können die Bulk Instance API nicht für die Erstellung von VMs verwenden, die Folgendes verwenden:

    • Durch vom Kunden verwaltete Verschlüsselungsschlüssel geschützte Laufwerke
    • Laufwerke, die durch vom Kunden bereitgestellte Verschlüsselungsschlüssel geschützt sind
    • Maschinen-Images
    • Affinitätslabels für Knoten für einzelne Mandanten
  • Wenn Sie ein globales DNS verwenden, kann es zu Namenskonflikten kommen, da die Zone nicht im vollständig qualifizierten Domainnamen enthalten ist. Das können Sie mit zonalem DNS vermeiden. Wenn Sie nicht zu zonalem DNS wechseln können, vermeiden Sie die Verwendung desselben Namensmusters in verschiedenen Regionen.

  • In seltenen Fällen kann es vorkommen, dass Compute Engine die Anfrage an die Bulk Instance API validiert, wenn die Anfrage beispielsweise von Compute Engine nicht erstellt werden kann, weil eine andere Anfrage das verfügbare Kontingent verbraucht hat. In diesem Fall führt Compute Engine ein Rollback der Anfrage durch und löscht alle bereits erstellten VMs.


Audit-Logs

Compute Engine protokolliert Informationen zur Bulk Instance API zu Beginn und am Ende der Anfrage im Audit-Log für Administratoraktivitäten.

Compute Engine erstellt auch separate Audit-Logs für jede VM. Sie finden das Audit-Log für eine einzelne VM, indem Sie den Wert von protoPayload.resourceName mit dem durch das Benennungsmuster generierten VM-Namen abgleichen.


Nächste Schritte