Reservierung für ein Einzelprojekt erstellen


In diesem Dokument wird beschrieben, wie Sie eine Reservierung für ein einzelnes Projekt erstellen, die nur von VM-Instanzen im selben Projekt genutzt werden kann. Informationen zu Reservierungen finden Sie unter Zonale Reservierungen von Compute Engine-Ressourcen.

Weitere Methoden zum Erstellen von Reservierungen finden Sie stattdessen auf den folgenden Seiten:

  • Wenn Sie im aktuellen Projekt 1- oder 3-Jahres-Zusicherungen haben, erhalten Ihre reservierten Ressourcen automatisch alle anwendbaren Rabatte für zugesicherte Nutzung. Sie können eine Reservierung auch erstellen und an eine Zusicherung anhängen, wenn Sie die Zusicherung erwerben. Weitere Informationen finden Sie unter Reservierungen an Zusicherungen anhängen.

  • Informationen zum Erstellen einer Reservierung, die von mehreren Projekten verwendet werden kann, finden Sie unter Freigegebene Reservierung erstellen.

Hinweise

  • Informationen zu den Anforderungen und Einschränkungen für Reservierungen
  • 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:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Wenn Sie die Terraform-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Weitere Informationen unter Set up authentication for a local development environment.

      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-Administrator (roles/compute.admin) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Reservierungen für ein einzelnes Projekt benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen von Reservierungen für ein Einzelprojekt erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Reservierungen für ein einzelnes Projekt zu erstellen:

  • compute.reservations.create für das Projekt
  • So geben Sie eine Instanzvorlage an: compute.instanceTemplates.useReadOnly für die Instanzvorlage

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Reservierung für ein einzelnes Projekt erstellen

Zum Verarbeiten einer Reservierung muss eine VM Attribute haben, die genau mit dieser Reservierung übereinstimmen. Wählen Sie einen der folgenden Abschnitte in diesem Dokument aus, um die Attribute der VMs anzugeben, die Sie reservieren möchten:

  • Empfohlen: Instanzvorlage angeben

    In diesem Abschnitt wird erläutert, wie Sie die Attribute einer Reservierung mithilfe einer Instanzvorlage definieren. Mithilfe einer Instanzvorlage können Sie die Attribute einer Reservierung und die VMs definieren, die die Reservierung an derselben Stelle nutzen können.

  • Vorhandene VM angeben

    In diesem Abschnitt wird erläutert, wie Sie die Attribute einer Reservierung mithilfe einer vorhandenen VM definieren. Wenn Sie die Attribute einer vorhandenen VM verwenden, können Sie die Reservierung nutzen, indem Sie VMs mit Attributen erstellen, die mit der Referenz-VM übereinstimmen.

  • Attribute direkt angeben

    In diesem Abschnitt wird erläutert, wie Sie die Attribute einer Reservierung direkt definieren können. Bei dieser Methode müssen Sie manuell prüfen, ob die Attribute Ihrer VMs und Reservierungen exakt übereinstimmen – alle nicht übereinstimmenden Attribute verhindern die Nutzung.

Standardmäßig kann eine Reservierung automatisch von allen VMs mit Attributen genutzt werden, die mit der Reservierung übereinstimmen. Wenn Sie die Nutzung von Reservierungen steuern möchten, haben Sie folgende Möglichkeiten:

Außerdem können Sie beim Erstellen einer Reservierung für ein einzelnes Projekt eine Richtlinie für kompakte Platzierungen angeben. Eine Richtlinie für kompakte Platzierung gibt an, dass sich VMs so nahe wie möglich beieinander befinden sollen, um die Netzwerklatenz zu reduzieren.

Instanzvorlage angeben

Achten Sie auf Folgendes, um Fehler beim Erstellen einer Reservierung durch Angabe einer Instanzvorlage zu vermeiden:

  • Erstellen Sie Ihre Reservierung in derselben Region und Zone wie die Ressourcen in der Instanzvorlage. In einer Instanzvorlage angegebene regionale oder zonale Ressourcen, z. B. ein Maschinentyp oder eine Persistent Disk, beschränken die Nutzung der Vorlage auf die Standorte, an denen diese Ressourcen vorhanden sind. Wenn Ihre Instanzvorlage beispielsweise eine vorhandene Persistent Disk-Volume in Zone us-central1-a angibt, können Sie Ihre Reservierung nur in derselben Zone erstellen. Wenn Sie prüfen möchten, ob eine vorhandene Vorlage Ressourcen enthält, die die Vorlage an eine bestimmte Region oder Zone binden, rufen Sie die Details der Vorlage auf und suchen Sie nach Verweisen auf regionale oder zonale Ressourcen, die darin enthalten sind.

  • Wenn die Instanzvorlage eine Richtlinie für kompakte Platzierung angibt, muss die Vorlage auch einen unterstützten Maschinentyp für Richtlinien für kompakte Platzierung angeben. Andernfalls schlägt das Erstellen der Reservierung fehl.

Wenn Sie durch Angabe einer Instanzvorlage eine Reservierung für ein einzelnes Projekt erstellen möchten, wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie in der Google Cloud -Konsole die Seite Reservierungen auf.

    Zu „Reservierungen“

  2. Klicken Sie auf dem Tab On-Demand-Reservierungen (Standard) auf Reservierung erstellen.

    Die Seite Reservierung erstellen wird geöffnet.

  3. Geben Sie unter Name einen Namen für die Reservierung ein.

  4. Wählen Sie unter Region und Zone aus, wo Sie Ressourcen reservieren möchten.

  5. Wählen Sie im Abschnitt Freigabetyp die Option Lokal aus, falls sie noch nicht ausgewählt ist.

  6. Optional: Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, wählen Sie im Abschnitt Google Cloud-Dienste die Option Reservierung freigeben aus.

  7. Wählen Sie im Abschnitt Mit VM-Instanz verwenden eine der folgenden Optionen:

    • Damit übereinstimmende VMs diese Reservierung automatisch verwenden können, wählen Sie Reservierung automatisch verwenden aus, falls diese Option noch nicht ausgewählt ist.

    • Wenn Sie die Ressourcen der Reservierung nur zum Erstellen übereinstimmender VMs verbrauchen möchten, die ausdrücklich namentlich auf diese Reservierung abzielen, klicken Sie auf Spezifische Reservierung auswählen.

  8. Geben Sie unter Anzahl der VM-Instanzen die Anzahl der VMs ein, die Sie reservieren möchten.

  9. Führen Sie im Abschnitt Maschinenkonfiguration die folgenden Schritte aus:

    1. Wählen Sie Instanzvorlage verwenden aus, um die Attribute Ihrer VMs aus einer vorhandenen Instanzvorlage anzugeben.

    2. Wählen Sie im Feld Instanzvorlage die gewünschte Vorlage aus. Wenn Sie eine regionale Instanzvorlage auswählen, können Sie Ressourcen nur innerhalb der Region der Instanzvorlage reservieren.

  10. Im Abschnitt Automatisch löschen können Sie die Option zum automatischen Löschen aktivieren, damit Compute Engine die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit automatisch löscht. Das automatische Löschen von Reservierungen kann nützlich sein, um unnötige Gebühren zu vermeiden, wenn Sie die Reservierung nicht mehr nutzen.

  11. Klicken Sie zum Erstellen der Reservierung auf Erstellen.

    Die Seite Reservierungen wird geöffnet. Das Erstellen der Reservierung für ein einzelnes Projekt kann bis zu einer Minute dauern.

gcloud

Verwenden Sie zum Erstellen einer Reservierung für ein einzelnes Projekt den Befehl gcloud compute reservations create.

Führen Sie den folgenden Befehl aus, um eine Reservierung für ein einzelnes Projekt durch Angabe einer Instanzvorlage ohne optionale Flags zu erstellen:

gcloud compute reservations create RESERVATION_NAME \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Ersetzen Sie Folgendes:

  • RESERVATION_NAME: der Name der Reservierung, die erstellt werden soll.

  • PROJECT_ID: die ID des Projekts, in dem Sie Ressourcen reservieren möchten und in dem sich die Instanzvorlage befindet.

  • LOCATION: der Speicherort der Instanzvorlage. Geben Sie einen der folgenden Werte an:

    • Für eine globale Instanzvorlage: global

    • Für eine regionale Instanzvorlage: regions/REGION. Ersetzen Sie REGION durch die Region, in der sich die Instanzvorlage befindet. Wenn Sie eine regionale Instanzvorlage angeben, können Sie VMs nur innerhalb der Region reservieren, in der sich die Vorlage befindet.

  • INSTANCE_TEMPLATE_NAME: der Name einer vorhandenen Instanzvorlage. Wenn in der Instanzvorlage ein A3-Maschinentyp oder eine Richtlinie für kompakte Platzierungen angegeben ist, müssen Sie das Flag --require-specific-reservation angeben. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können. Weitere Informationen finden Sie unter VMs aus einer bestimmten Reservierung nutzen.

  • NUMBER_OF_VMS: die Anzahl der zu reservierenden VMs.

  • ZONE: die Zone, in der Ressourcen reserviert werden sollen.

So erstellen Sie beispielsweise eine Reservierung für zehn VMs in Zone us-central1-a, indem Sie eine globale Instanzvorlage angeben. Führen Sie dazu den folgenden Befehl aus:

gcloud compute reservations create my-reservation \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

Optional können Sie eine oder mehrere der folgenden Optionen angeben:

  • Wenn Sie angeben möchten, dass nur VMs, die speziell auf diese Reservierung abzielen, sie verbrauchen können, fügen Sie das Flag --require-specific-reservation ein.

    gcloud compute reservations create RESERVATION_NAME \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --require-specific-reservation \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --reservation-sharing-policy=ALLOW_ALL.

    gcloud beta compute reservations create RESERVATION_NAME \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --reservation-sharing-policy=ALLOW_ALL \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Wählen Sie eine der folgenden Methoden aus, damit Compute Engine die Reservierung automatisch löschen kann:

    • Verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --delete-at-time, um die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit zu löschen.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-at-time=DELETE_AT_TIME \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ersetzen Sie DELETE_AT_TIME durch einen RFC 3339-Zeitstempelfür Datum und Uhrzeit, der so aussehen muss: none YYYY-MM-DDTHH:MM:SSOFFSET

      Ersetzen Sie Folgendes:

      • YYYY-MM-DD: ein Datum, formatiert als vierstelliges Jahr, zweistelliger Monat und zweistelliger Tag des Monats und durch Bindestriche (-) getrennt.

      • HH:MM:SS: eine Uhrzeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minuten und zweistellige Sekunden formatiert und durch Doppelpunkte getrennt (:) ist.

      • OFFSET: die Zeitzone, formatiert als Versatz von der koordinierten Weltzeit (Coordinated Universal Time, UTC). Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, geben Sie -08:00 an. Wenn Sie keinen Versatz verwenden möchten, geben Sie Z an.

    • Verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --delete-after-duration, um die Reservierung nach einer bestimmten Dauer zu löschen.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-after-duration=DELETE_AFTER_DURATION \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ersetzen Sie DELETE_AFTER_DURATION durch eine Dauer in Tagen, Stunden, Minuten oder Sekunden. Geben Sie beispielsweise 30m für 30 Minuten oder 1d2h3m4s für 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden an.

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// Creates the reservation from given template in particular zone
func createReservation(w io.Writer, projectID, zone, reservationName, sourceTemplate string) error {
	// projectID := "your_project_id"
	// zone := "us-west3-a"
	// reservationName := "your_reservation_name"
	// template: existing template path. Following formats are allowed:
	//  	- projects/{project_id}/global/instanceTemplates/{template_name}
	//  	- projects/{project_id}/regions/{region}/instanceTemplates/{template_name}
	//  	- https://www.googleapis.com/compute/v1/projects/{project_id}/global/instanceTemplates/instanceTemplate
	//  	- https://www.googleapis.com/compute/v1/projects/{project_id}/regions/{region}/instanceTemplates/instanceTemplate

	ctx := context.Background()
	reservationsClient, err := compute.NewReservationsRESTClient(ctx)
	if err != nil {
		return err
	}
	defer reservationsClient.Close()

	req := &computepb.InsertReservationRequest{
		Project: projectID,
		ReservationResource: &computepb.Reservation{
			Name: proto.String(reservationName),
			Zone: proto.String(zone),
			SpecificReservation: &computepb.AllocationSpecificSKUReservation{
				Count:                  proto.Int64(2),
				SourceInstanceTemplate: proto.String(sourceTemplate),
			},
		},
		Zone: zone,
	}

	op, err := reservationsClient.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create reservation: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Reservation created\n")

	return nil
}

Java

import com.google.cloud.compute.v1.AllocationSpecificSKUReservation;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.Reservation;
import com.google.cloud.compute.v1.ReservationsClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateReservationForInstanceTemplate {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";
    // Name of the zone in which you want to create the reservation.
    String zone = "us-central1-a";
    // Name of the reservation you want to create.
    String reservationName = "YOUR_RESERVATION_NAME";
    // The number of virtual machines you want to create.
    int numberOfVms = 3;
    // The URI of the instance template with GLOBAL location
    // to be used for creating the reservation.
    String instanceTemplateUri =
        "projects/YOUR_PROJECT_ID/global/instanceTemplates/YOUR_INSTANCE_TEMPLATE_NAME";
    // The URI of the instance template with REGIONAL location
    // to be used for creating the reservation. For us-central1 region in this case.
    // String instanceTemplateUri =
    // "projects/YOUR_PROJECT_ID/regions/us-central1/instanceTemplates/YOUR_INSTANCE_TEMPLATE_NAME"

    createReservationForInstanceTemplate(
        projectId, reservationName, instanceTemplateUri, numberOfVms, zone);
  }

  // Creates a reservation in a project for the instance template.
  public static Reservation createReservationForInstanceTemplate(
      String projectId, String reservationName, String instanceTemplateUri,
      int numberOfVms, String zone)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (ReservationsClient reservationsClient = ReservationsClient.create()) {
      Reservation reservation =
          Reservation.newBuilder()
              .setName(reservationName)
              .setZone(zone)
              .setSpecificReservation(
                  AllocationSpecificSKUReservation.newBuilder()
                      // Set the number of instances
                      .setCount(numberOfVms)
                      // Set the instance template to be used for creating the reservation.
                      .setSourceInstanceTemplate(instanceTemplateUri)
                      .build())
              .build();

      Operation response =
          reservationsClient.insertAsync(projectId, zone, reservation).get(3, TimeUnit.MINUTES);

      if (response.hasError()) {
        return null;
      }
      return reservationsClient.get(projectId, zone, reservationName);
    }
  }
}

Node.js

// Import the Compute library
const computeLib = require('@google-cloud/compute');
const compute = computeLib.protos.google.cloud.compute.v1;

// Instantiate a reservationsClient
const reservationsClient = new computeLib.ReservationsClient();
// Instantiate a zoneOperationsClient
const zoneOperationsClient = new computeLib.ZoneOperationsClient();

/**
 * TODO(developer): Update/uncomment these variables before running the sample.
 */
// The ID of the project where you want to reserve resources and where the instance template exists.
const projectId = await reservationsClient.getProjectId();
// The zone in which to reserve resources.
const zone = 'us-central1-a';
// The name of the reservation to create.
// reservationName = 'reservation-01';
// The number of VMs to reserve.
const vmsNumber = 3;

/**
 * The name of an existing instance template.
 * TODO(developer): Uncomment and update instanceTemplateName before running the sample.
 */
// const instanceTemplateName = 'pernament-region-template-name';

/**
 * // The location of the instance template.
 * TODO(developer): Uncomment the `location` variable depending on which template you want to use.
 */

// The location for a regional instance template: regions/{region}. Replace region with the region where the instance template is located.
// If you specify a regional instance template, then you can only reserve VMs within the same region as the template's region.
// const location = `regions/${zone.slice(0, -2)}`;

// The location for a global instance template.
// const location = 'global';

async function callCreateComputeReservationInstanceTemplate() {
  // Create reservation for 3 VMs in zone us-central1-a by specifying a instance template.
  const specificReservation = new compute.AllocationSpecificSKUReservation({
    count: vmsNumber,
    sourceInstanceTemplate: `projects/${projectId}/${location}/instanceTemplates/${instanceTemplateName}`,
  });

  // Create a reservation.
  const reservation = new compute.Reservation({
    name: reservationName,
    specificReservation,
    // To specify that only VMs that specifically target this reservation can consume it,
    // set specificReservationRequired field to true.
    specificReservationRequired: true,
  });

  const [response] = await reservationsClient.insert({
    project: projectId,
    reservationResource: reservation,
    zone,
  });

  let operation = response.latestResponse;

  // Wait for the create reservation operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await zoneOperationsClient.wait({
      operation: operation.name,
      project: projectId,
      zone: operation.zone.split('/').pop(),
    });
  }

  console.log(`Reservation: ${reservationName} created.`);
}

await callCreateComputeReservationInstanceTemplate();

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def create_reservation_from_template(
    project_id: str, reservation_name: str, template: str
) -> compute_v1.Reservation:
    """
    Create a new reservation based on an existing template.

    Args:
        project_id: project ID or project number of the Cloud project you use.
        reservation_name: the name of new reservation.
        template: existing template path. Following formats are allowed:
            - projects/{project_id}/global/instanceTemplates/{template_name}
            - projects/{project_id}/regions/{region}/instanceTemplates/{template_name}
            - https://www.googleapis.com/compute/v1/projects/{project_id}/global/instanceTemplates/instanceTemplate
            - https://www.googleapis.com/compute/v1/projects/{project_id}/regions/{region}/instanceTemplates/instanceTemplate

    Returns:
        Reservation object that represents the new reservation.
    """

    reservations_client = compute_v1.ReservationsClient()
    request = compute_v1.InsertReservationRequest()
    request.project = project_id
    request.zone = "us-central1-a"

    specific_reservation = compute_v1.AllocationSpecificSKUReservation()
    specific_reservation.count = 1
    specific_reservation.source_instance_template = template

    reservation = compute_v1.Reservation()
    reservation.name = reservation_name
    reservation.specific_reservation = specific_reservation

    request.reservation_resource = reservation
    operation = reservations_client.insert(request)
    wait_for_extended_operation(operation, "Reservation creation")

    return reservations_client.get(
        project=project_id, zone="us-central1-a", reservation=reservation_name
    )

REST

Zum Erstellen einer Reservierung für ein einzelnes Projekt senden Sie eine POST-Anfrage an die Methode reservations.insert.

Wenn Sie eine Reservierung für ein einzelnes Projekt erstellen möchten, indem Sie eine Instanzvorlage angeben, ohne optionale Flags einzubeziehen, stellen Sie die folgende POST-Anfrage:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Projekts, in dem Sie Ressourcen reservieren möchten und in dem sich die Instanzvorlage befindet.

  • ZONE: die Zone, in der Ressourcen reserviert werden sollen.

  • RESERVATION_NAME: der Name der Reservierung, die erstellt werden soll.

  • NUMBER_OF_VMS: die Anzahl der zu reservierenden VMs.

  • LOCATION: der Speicherort der Instanzvorlage. Geben Sie einen der folgenden Werte an:

    • Für eine globale Instanzvorlage: global

    • Für eine regionale Instanzvorlage: regions/REGION. Ersetzen Sie REGION durch die Region, in der sich die Instanzvorlage befindet. Wenn Sie eine regionale Instanzvorlage angeben, können Sie VMs nur innerhalb der Region reservieren, in der sich die Vorlage befindet.

  • INSTANCE_TEMPLATE_NAME: der Name einer vorhandenen Instanzvorlage. Wenn in der Instanzvorlage ein A3-Maschinentyp oder eine Richtlinie für kompakte Platzierung angegeben ist, müssen Sie das Feld specificReservationRequired in den Anfragetext aufnehmen und auf true festlegen. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können. Weitere Informationen finden Sie unter VMs aus einer bestimmten Reservierung nutzen.

So erstellen Sie beispielsweise eine Reservierung für zehn VMs in Zone us-central1-a, indem Sie eine globale Instanzvorlage angeben. Nehmen Sie dazu folgende POST-Anfrage vor:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

Optional können Sie eine oder mehrere der folgenden Optionen angeben:

  • Wenn Sie angeben möchten, dass nur VMs, die ausdrücklich auf diese Reservierung abzielen, diese verbrauchen können, fügen Sie das Feld specificReservationRequired im Anfragetext ein und legen Sie dafür das Feld auf true fest.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
      },
      "specificReservationRequired": true
    }
    
  • Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, senden Sie eine POST-Anfrage an die beta.reservations.insert-Methode. Fügen Sie im Anfragetext das Feld serviceShareType ein und legen Sie es auf ALLOW_ALL fest.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "reservationSharingPolicy": {
        "serviceShareType": "ALLOW_ALL"
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
      }
    }
    
  • Wählen Sie eine der folgenden Methoden aus, damit Compute Engine die Reservierung automatisch löschen kann:

    • Wenn Sie die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit löschen möchten, stellen Sie eine POST-Anfrage an die Methode beta.reservations.insert. Geben Sie im Anfragetext das Feld deleteAtTime an.

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAtTime": "DELETE_AT_TIME",
        "name": "RESERVATION_NAME",
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        }
      }
      

      Ersetzen Sie DELETE_AT_TIME durch einen RFC 3339-Zeitstempel für Datum und Uhrzeit, der so aussehen muss:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ersetzen Sie Folgendes:

      • YYYY-MM-DD: ein Datum, formatiert als vierstelliges Jahr, zweistelliger Monat und zweistelliger Tag des Monats und durch Bindestriche (-) getrennt.

      • HH:MM:SS: eine Uhrzeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minuten und zweistellige Sekunden formatiert und durch Doppelpunkte getrennt (:) ist.

      • OFFSET: die Zeitzone, formatiert als Versatz von der koordinierten Weltzeit (Coordinated Universal Time, UTC). Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, geben Sie -08:00 an. Wenn Sie keinen Versatz verwenden möchten, geben Sie Z an.

    • Wenn Sie die Reservierung nach einer bestimmten Dauer löschen möchten, senden Sie eine POST-Anfrage an die Methode beta.reservations.insert. Geben Sie im Anfragetext das Feld deleteAfterDuration an.

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        "name": "RESERVATION_NAME",
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        }
      }
      

      Ersetzen Sie DELETE_AFTER_DURATION durch die Dauer in Sekunden. Geben Sie beispielsweise 86400 für 86.400 Sekunden (1 Tag) an.

Vorhandene VM angeben

Sie können eine Reservierung nur auf der Grundlage einer vorhandenen VM in derselben Zone wie die VM erstellen.

Nachdem Sie die Reservierung erstellt haben, können Sie sie nutzen, indem Sie VMs mit Attributen erstellen, die mit der Referenz-VM übereinstimmen. Dazu können Sie eines der folgenden Dinge tun:

So erstellen Sie eine Reservierung für ein einzelnes Projekt, bei der die Eigenschaften einer vorhandenen VM verwendet werden:

  1. Rufen Sie in der Google Cloud -Konsole die Seite Reservierungen auf.

    Zu „Reservierungen“

  2. Klicken Sie auf Reservierung erstellen.

    Die Seite Reservierung erstellen wird geöffnet.

  3. Geben Sie unter Name einen Namen für die Reservierung ein.

  4. Wählen Sie unter Region und Zone aus, wo Sie Ressourcen reservieren möchten.

  5. Wählen Sie im Abschnitt Freigabetyp die Option Lokal aus, falls sie noch nicht ausgewählt ist.

  6. Wählen Sie im Abschnitt Mit VM-Instanz verwenden eine der folgenden Optionen:

    • Damit übereinstimmende VMs diese Reservierung automatisch verwenden können, wählen Sie Reservierung automatisch verwenden aus, falls diese Option noch nicht ausgewählt ist.

    • Wenn Sie die Ressourcen der Reservierung nur zum Erstellen übereinstimmender VMs verbrauchen möchten, die ausdrücklich namentlich auf diese Reservierung abzielen, klicken Sie auf Spezifische Reservierung auswählen.

  7. Geben Sie unter Anzahl der VM-Instanzen die Anzahl der VMs ein, die Sie reservieren möchten.

  8. Führen Sie im Abschnitt Maschinenkonfiguration die folgenden Schritte aus:

    1. Wählen Sie Vorhandene VM verwenden aus.

    2. Wählen Sie unter Vorhandene VM die VM mit den Attributen aus, die Sie zum Erstellen der Reservierung verwenden möchten.

  9. Optional: Geben Sie eine Richtlinie für kompakte Platzierungen für eine Reservierung an, die die Anforderungen erfüllt. Klicken Sie dazu im Bereich Richtlinie für die Gruppenplatzierung auf die Liste Richtlinie für die Gruppenplatzierung auswählen oder erstellen und führen Sie einen der folgenden Schritte aus:

    • So erstellen Sie eine Richtlinie für kompakte Platzierungen für diese Reservierung:

      1. Klicken Sie auf Gruppenplatzierungsrichtlinie erstellen.

        Der Bereich Gruppenplatzierungsrichtlinie erstellen wird angezeigt.

      2. Geben Sie unter Richtlinienname einen Namen für die Richtlinie ein.

      3. Klicken Sie auf Erstellen.

        Das Erstellen der Richtlinie für kompakte Platzierung kann einige Sekunden dauern.

    • Wählen Sie andernfalls eine vorhandene Richtlinie für kompakte Platzierungen.

  10. Im Abschnitt Automatisch löschen können Sie die Option zum automatischen Löschen aktivieren, damit Compute Engine die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit automatisch löscht. Das automatische Löschen von Reservierungen kann nützlich sein, um unnötige Gebühren zu vermeiden, wenn Sie die Reservierung nicht mehr nutzen.

  11. Klicken Sie zum Erstellen der Reservierung auf Erstellen.

    Die Seite Reservierungen wird geöffnet. Das Erstellen der Reservierung kann bis zu einer Minute dauern.

Attribute direkt angeben

Wenn Sie eine Reservierung für ein einzelnes Projekt durch direkte Angabe von Attributen erstellen möchten, wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie in der Google Cloud -Konsole die Seite Reservierungen auf.

    Zu „Reservierungen“

  2. Klicken Sie auf dem Tab On-Demand-Reservierungen (Standard) auf Reservierung erstellen.

    Die Seite Reservierung erstellen wird geöffnet.

  3. Geben Sie unter Name einen Namen für die Reservierung ein.

  4. Wählen Sie unter Region und Zone aus, wo Sie Ressourcen reservieren möchten.

  5. Wählen Sie im Abschnitt Freigabetyp die Option Lokal aus, falls sie noch nicht ausgewählt ist.

  6. Optional: Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, wählen Sie im Abschnitt Google Cloud-Dienste die Option Reservierung freigeben aus.

  7. Wählen Sie im Abschnitt Mit VM-Instanz verwenden eine der folgenden Optionen:

    • Damit übereinstimmende VMs diese Reservierung automatisch verwenden können, wählen Sie Reservierung automatisch verwenden aus, falls diese Option noch nicht ausgewählt ist.

    • Wenn Sie die Ressourcen der Reservierung nur zum Erstellen übereinstimmender VMs verbrauchen möchten, die ausdrücklich namentlich auf diese Reservierung abzielen, klicken Sie auf Spezifische Reservierung auswählen.

  8. Geben Sie unter Anzahl der VM-Instanzen die Anzahl der VMs ein, die Sie reservieren möchten.

  9. Wählen Sie im Abschnitt Maschinenkonfiguration die Option Maschinentyp angeben aus und geben Sie Folgendes an:

    1. Wählen Sie eine Maschinenfamilie, Reihe und einen Maschinentyp für eine Maschinenfamilie, eine Reihe und einen Maschinentyp aus.

    2. Optional: So geben Sie eine Mindest-CPU-Plattform an oder binden GPUs an N1-VMs an:

      1. Klicken Sie zum Erweitern des Abschnitts CPU-Plattform und GPU auf den Erweiterungspfeil .

      2. Optional: Wählen Sie unter CPU-Formular eine Option aus, um eine Minimalanforderung für die CPU-Plattform anzugeben.

      3. Optional: Wenn Sie GPUs an N1-VMs anhängen möchten, klicken Sie auf GPU hinzufügen. Wählen Sie unter GPU-Typ und die Anzahl der GPUs den Typ und die Anzahl der GPUs aus, die an jede N1-VM angehängt werden sollen.

    3. Optional: So fügen Sie lokale SSD-Laufwerke hinzu:

      1. Wählen Sie unter Anzahl der Laufwerke die Anzahl der lokalen SSD-Laufwerke für jede VM aus.

      2. Wählen Sie unter Schnittstellentyp die Schnittstelle für die lokalen SSD-Laufwerke aus.

    4. Optional: Geben Sie eine Richtlinie für kompakte Platzierungen für eine Reservierung an, die die Anforderungen erfüllt. Klicken Sie dazu auf die Liste Richtlinie für die Gruppenplatzierung auswählen oder erstellen und führen Sie einen der folgenden Schritte aus:

      • So erstellen Sie eine Richtlinie für kompakte Platzierungen für diese Reservierung:

        1. Klicken Sie auf Gruppenplatzierungsrichtlinie erstellen.

          Der Bereich Gruppenplatzierungsrichtlinie erstellen wird angezeigt.

        2. Geben Sie unter Richtlinienname einen Namen für die Richtlinie ein.

        3. Klicken Sie auf Erstellen.

          Das Erstellen der Richtlinie für kompakte Platzierung kann einige Sekunden dauern.

      • Wählen Sie andernfalls eine vorhandene Richtlinie für kompakte Platzierungen.

  10. Optional: Geben Sie eine Richtlinie für kompakte Platzierungen für eine Reservierung an, die die Anforderungen erfüllt. Klicken Sie dazu im Bereich Richtlinie für die Gruppenplatzierung auf die Liste Richtlinie für die Gruppenplatzierung auswählen oder erstellen und führen Sie einen der folgenden Schritte aus:

    • So erstellen Sie eine Richtlinie für kompakte Platzierungen für diese Reservierung:

      1. Klicken Sie auf Gruppenplatzierungsrichtlinie erstellen.

        Der Bereich Gruppenplatzierungsrichtlinie erstellen wird angezeigt.

      2. Geben Sie unter Richtlinienname einen Namen für die Richtlinie ein.

      3. Klicken Sie auf Erstellen.

        Das Erstellen der Richtlinie für kompakte Platzierung kann einige Sekunden dauern.

    • Wählen Sie andernfalls eine vorhandene Richtlinie für kompakte Platzierungen.

  11. Im Abschnitt Automatisch löschen können Sie die Option zum automatischen Löschen aktivieren, damit Compute Engine die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit automatisch löscht. Das automatische Löschen von Reservierungen kann nützlich sein, um unnötige Gebühren zu vermeiden, wenn Sie die Reservierung nicht mehr nutzen.

  12. Klicken Sie zum Erstellen der Reservierung auf Erstellen.

    Die Seite Reservierungen wird geöffnet. Das Erstellen der Reservierung für ein einzelnes Projekt kann bis zu einer Minute dauern.

gcloud

Verwenden Sie zum Erstellen einer Reservierung für ein einzelnes Projekt den Befehl gcloud compute reservations create.

Wenn Sie eine Reservierung für ein einzelnes Projekt erstellen möchten, indem Sie Attribute direkt angeben und keine optionalen Flags verwenden, führen Sie den folgenden Befehl aus:

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Ersetzen Sie Folgendes:

  • RESERVATION_NAME: der Name der Reservierung, die erstellt werden soll.

  • MACHINE_TYPE: Maschinentyp, der für jede VM verwendet werden soll. Wenn Sie einen A3-Maschinentyp angeben, müssen Sie das Flag --require-specific-reservation angeben. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können. Weitere Informationen finden Sie unter VMs aus einer bestimmten Reservierung nutzen.

  • NUMBER_OF_VMS: die Anzahl der zu reservierenden VMs.

  • ZONE: die Zone, in der Ressourcen reserviert werden sollen.

Um beispielsweise eine Reservierung in der Zone us-central1-a für zehn VMs zu erstellen, die jeweils einen vordefinierten Maschinentyp N2 mit 4 vCPUs verwenden, führen Sie den folgenden Befehl aus:

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --vm-count=10 \
    --zone=us-central1-a

Optional können Sie eine oder mehrere der folgenden Optionen angeben:

  • Wenn Sie GPUs an Ihre reservierten N1-VMs anhängen möchten, fügen Sie das Flag --accelerator ein.

    gcloud compute reservations create RESERVATION_NAME \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        --machine-type=MACHINE_TYPE \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • NUMBER_OF_ACCELERATORS: die Anzahl der GPUs, die pro reservierter VM hinzugefügt werden sollen.

    • ACCELERATOR_TYPE: ein unterstütztes GPU-Modell für N1-VMs. Das von Ihnen ausgewählte GPU-Modell muss in der Zone verfügbar sein, in der Sie Ressourcen reservieren möchten. Andernfalls schlägt das Erstellen der Reservierung fehl.

  • Fügen Sie ein oder mehrere --local-ssd-Flags hinzu, um jeder reservierten VM eine oder mehrere lokale SSDs hinzuzufügen. Sie können bis zu 24 lokale SSDs angeben. Jede lokale SSD ist 375 GB groß.

    Wenn Sie beim Erstellen einer Reservierung beispielsweise zwei lokale SSDs angeben möchten, fügen Sie zwei --local-ssd-Flags hinzu:

    gcloud compute reservations create RESERVATION_NAME \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        --machine-type=MACHINE_TYPE \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ersetzen Sie INTERFACE_1 und INTERFACE_2 durch den Schnittstellentyp, den jedes lokale SSD verwenden soll. Geben Sie einen der folgenden Werte an:

    • NVMe-Laufwerkschnittstellen: nvme

    • SCSI-Festplattenschnittstellen: scsi

    Der von Ihnen für die reservierten VMs angegebene Maschinentyp muss die ausgewählten Laufwerkschnittstellen unterstützen. Andernfalls schlägt das Erstellen der Reservierung fehl. Weitere Informationen finden Sie unter Laufwerkschnittstelle auswählen.

  • Damit die reservierten VMs eine bestimmte Mindest-CPU-Plattform anstelle der Standard-CPU-Plattform der Zone verwenden, fügen Sie das Flag --min-cpu-platform ein.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ersetzen Sie MIN_CPU_PLATFORM durch eine Mindest-CPU-Plattform. Um sicherzustellen, dass eine CPU-Plattform in der Zone verfügbar ist, in der Sie Ressourcen reservieren, rufen Sie die verfügbaren CPU-Plattformen nach Zone auf.

  • Wenn Sie angeben möchten, dass nur VMs, die speziell auf diese Reservierung abzielen, sie verbrauchen können, fügen Sie das Flag --require-specific-reservation ein.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --require-specific-reservation \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Wenn Sie eine Richtlinie für kompakte Platzierung angeben möchten, um die Netzwerklatenz zwischen VMs zu reduzieren, fügen Sie das Flag --resource-policies=policy hinzu.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --resource-policies=policy=COMPACT_PLACEMENT_POLICY_NAME \
        --require-specific-reservation \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ersetzen Sie COMPACT_PLACEMENT_POLICY_NAME durch den Namen einer vorhandenen Richtlinie für kompakte Platzierung. Außerdem sollten Sie Folgendes angeben, um Fehler beim Erstellen einer Reservierung für ein einzelnes Projekt zu vermeiden, die eine Richtlinie für kompakte Platzierung angibt.

    • Ein unterstützter Maschinentyp und eine maximale Anzahl von VMs für Richtlinien für kompakte Platzierung.

    • Eine Zone innerhalb der Region, in der sich die Richtlinie für kompakte Platzierung befindet.

    • Das Flag --require-specific-reservation. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können.

  • Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --reservation-sharing-policy=ALLOW_ALL.

    gcloud beta compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --reservation-sharing-policy=ALLOW_ALL \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Wählen Sie eine der folgenden Methoden aus, damit Compute Engine die Reservierung automatisch löschen kann:

    • Verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --delete-at-time, um die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit zu löschen.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-at-time=DELETE_AT_TIME \
          --machine-type=MACHINE_TYPE \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ersetzen Sie DELETE_AT_TIME durch einen RFC 3339-Zeitstempel für Datum und Uhrzeit, der so aussehen muss:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ersetzen Sie Folgendes:

      • YYYY-MM-DD: ein Datum, formatiert als vierstelliges Jahr, zweistelliger Monat und zweistelliger Tag des Monats und durch Bindestriche (-) getrennt.

      • HH:MM:SS: eine Uhrzeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minuten und zweistellige Sekunden formatiert und durch Doppelpunkte getrennt (:) ist.

      • OFFSET: die Zeitzone, formatiert als Versatz von der koordinierten Weltzeit (Coordinated Universal Time, UTC). Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, geben Sie -08:00 an. Wenn Sie keinen Versatz verwenden möchten, geben Sie Z an.

    • Verwenden Sie den Befehl gcloud beta compute reservations create mit dem Flag --delete-after-duration, um die Reservierung nach einer bestimmten Dauer zu löschen.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-after-duration=DELETE_AFTER_DURATION \
          --machine-type=MACHINE_TYPE \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ersetzen Sie DELETE_AFTER_DURATION durch eine Dauer in Tagen, Stunden, Minuten oder Sekunden. Geben Sie beispielsweise 30m für 30 Minuten oder 1d2h3m4s für 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden an.

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// Creates the reservation with accelerated image
func createBaseReservation(w io.Writer, projectID, zone, reservationName string) error {
	// projectID := "your_project_id"
	// zone := "us-west3-a"
	// reservationName := "your_reservation_name"

	ctx := context.Background()
	reservationsClient, err := compute.NewReservationsRESTClient(ctx)
	if err != nil {
		return err
	}
	defer reservationsClient.Close()

	// Creating reservation based on direct properties
	req := &computepb.InsertReservationRequest{
		Project: projectID,
		ReservationResource: &computepb.Reservation{
			Name: proto.String(reservationName),
			Zone: proto.String(zone),
			SpecificReservation: &computepb.AllocationSpecificSKUReservation{
				Count: proto.Int64(2),
				// Properties, which allows customising instances
				InstanceProperties: &computepb.AllocationSpecificSKUAllocationReservedInstanceProperties{
					// Attaching GPUs to the reserved VMs
					// Read more: https://cloud.google.com/compute/docs/gpus#n1-gpus
					GuestAccelerators: []*computepb.AcceleratorConfig{
						{
							AcceleratorCount: proto.Int32(1),
							AcceleratorType:  proto.String("nvidia-tesla-t4"),
						},
					},
					// Including local SSD disks
					LocalSsds: []*computepb.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk{
						{
							DiskSizeGb: proto.Int64(375),
							Interface:  proto.String("NVME"),
						},
					},
					MachineType: proto.String("n1-standard-2"),
					// Specifying minimum CPU platform
					// Read more: https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform
					MinCpuPlatform: proto.String("Intel Skylake"),
				},
			},
		},
		Zone: zone,
	}

	op, err := reservationsClient.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create reservation: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Reservation created\n")

	return nil
}

Java

import com.google.cloud.compute.v1.AcceleratorConfig;
import com.google.cloud.compute.v1.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk;
import com.google.cloud.compute.v1.AllocationSpecificSKUAllocationReservedInstanceProperties;
import com.google.cloud.compute.v1.AllocationSpecificSKUReservation;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.Reservation;
import com.google.cloud.compute.v1.ReservationsClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateReservation {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";
    // Name of the zone in which you want to create the disk.
    String zone = "us-central1-a";
    // Name of the reservation you want to create.
    String reservationName = "YOUR_RESERVATION_NAME";
    // Number of instances in the reservation.
    int numberOfVms = 3;

    createReservation(projectId, reservationName, numberOfVms, zone);
  }

  // Creates reservation with optional flags
  public static Reservation createReservation(
      String projectId, String reservationName, int numberOfVms, String zone)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // Create the reservation with optional properties:
    // Machine type of the instances in the reservation.
    String machineType = "n1-standard-2";
    // Number of accelerators to be attached to the instances in the reservation.
    int numberOfAccelerators = 1;
    // Accelerator type to be attached to the instances in the reservation.
    String acceleratorType = "nvidia-tesla-t4";
    // Minimum CPU platform to be attached to the instances in the reservation.
    String minCpuPlatform = "Intel Skylake";
    // Local SSD size in GB to be attached to the instances in the reservation.
    int localSsdSize = 375;
    // Local SSD interfaces to be attached to the instances in the reservation.
    String localSsdInterface1 = "NVME";
    String localSsdInterface2 = "SCSI";
    boolean specificReservationRequired = true;
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (ReservationsClient reservationsClient = ReservationsClient.create()) {
      Reservation reservation =
          Reservation.newBuilder()
              .setName(reservationName)
              .setZone(zone)
              .setSpecificReservationRequired(specificReservationRequired)
              .setSpecificReservation(
                  AllocationSpecificSKUReservation.newBuilder()
                      // Set the number of instances
                      .setCount(numberOfVms)
                      // Set instance properties
                      .setInstanceProperties(
                          AllocationSpecificSKUAllocationReservedInstanceProperties.newBuilder()
                              .setMachineType(machineType)
                              .setMinCpuPlatform(minCpuPlatform)
                              .addGuestAccelerators(
                                  AcceleratorConfig.newBuilder()
                                      .setAcceleratorCount(numberOfAccelerators)
                                      .setAcceleratorType(acceleratorType)
                                      .build())
                              .addLocalSsds(
                            AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk
                                      .newBuilder()
                                      .setDiskSizeGb(localSsdSize)
                                      .setInterface(localSsdInterface1)
                                      .build())
                              .addLocalSsds(
                            AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk
                                      .newBuilder()
                                      .setDiskSizeGb(localSsdSize)
                                      .setInterface(localSsdInterface2)
                                      .build())
                              .build())
                      .build())
              .build();

      Operation response =
          reservationsClient.insertAsync(projectId, zone, reservation).get(7, TimeUnit.MINUTES);

      if (response.hasError()) {
        return null;
      }
      return reservationsClient.get(projectId, zone, reservationName);
    }
  }
}

Node.js

// Import the Compute library
const computeLib = require('@google-cloud/compute');
const compute = computeLib.protos.google.cloud.compute.v1;

// Instantiate a reservationsClient
const reservationsClient = new computeLib.ReservationsClient();
// Instantiate a zoneOperationsClient
const zoneOperationsClient = new computeLib.ZoneOperationsClient();

/**
 * TODO(developer): Update/uncomment these variables before running the sample.
 */
// The ID of the project where you want to reserve resources.
const projectId = await reservationsClient.getProjectId();
// The zone in which to reserve resources.
const zone = 'us-central1-a';
// The name of the reservation to create.
// reservationName = 'reservation-01';
// The number of VMs to reserve.
const vmsNumber = 3;
// Machine type to use for each VM.
const machineType = 'n1-standard-4';

async function callCreateComputeReservationFromProperties() {
  // Create specific reservation for 3 VMs that each use an N1 predefined machine type with 4 vCPUs.
  const specificReservation = new compute.AllocationSpecificSKUReservation({
    count: vmsNumber,
    instanceProperties: {
      machineType,
      // To have the reserved VMs use a specific minimum CPU platform instead of the zone's default CPU platform.
      minCpuPlatform: 'Intel Skylake',
      // If you want to attach GPUs to your reserved N1 VMs, update and uncomment guestAccelerators if needed.
      // guestAccelerators: [
      //   {
      //     // The number of GPUs to add per reserved VM.
      //     acceleratorCount: 1,
      //     // Supported GPU model for N1 VMs. Ensure that your chosen GPU model is available in the zone,
      //     // where you want to reserve resources.
      //     acceleratorType: 'nvidia-tesla-t4',
      //   },
      // ],
      // If you want to add local SSD disks to each reserved VM, update and uncomment localSsds if needed.
      // You can specify up to 24 Local SSD disks. Each Local SSD disk is 375 GB.
      // localSsds: [
      //   {
      //     diskSizeGb: 375,
      //     // The type of interface you want each Local SSD disk to use. Specify one of the following values: NVME or SCSI.
      //     // Make sure that the machine type you specify for the reserved VMs supports the chosen disk interfaces.
      //     interface: 'NVME',
      //   },
      // ],
    },
  });

  // Create a reservation.
  const reservation = new compute.Reservation({
    name: reservationName,
    zone,
    specificReservation,
    // To specify that only VMs that specifically target this reservation can consume it,
    // set specificReservationRequired field to true.
    specificReservationRequired: true,
  });

  const [response] = await reservationsClient.insert({
    project: projectId,
    reservationResource: reservation,
    zone,
  });

  let operation = response.latestResponse;

  // Wait for the create reservation operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await zoneOperationsClient.wait({
      operation: operation.name,
      project: projectId,
      zone: operation.zone.split('/').pop(),
    });
  }

  console.log(`Reservation: ${reservationName} created.`);
}

await callCreateComputeReservationFromProperties();

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def create_compute_reservation(
    project_id: str,
    zone: str = "us-central1-a",
    reservation_name="your-reservation-name",
) -> compute_v1.Reservation:
    """Creates a compute reservation in GCP.
    Args:
        project_id (str): The ID of the Google Cloud project.
        zone (str): The zone to create the reservation.
        reservation_name (str): The name of the reservation to create.
    Returns:
        Reservation object that represents the new reservation.
    """

    instance_properties = compute_v1.AllocationSpecificSKUAllocationReservedInstanceProperties(
        machine_type="n1-standard-1",
        # Optional. Specifies the minimum CPU platform for the VM instance.
        min_cpu_platform="Intel Ivy Bridge",
        # Optional. Specifies amount of local ssd to reserve with each instance.
        local_ssds=[
            compute_v1.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk(
                disk_size_gb=375, interface="NVME"
            ),
            compute_v1.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk(
                disk_size_gb=375, interface="SCSI"
            ),
        ],
        # Optional. Specifies the GPUs allocated to each instance.
        # guest_accelerators=[
        #     compute_v1.AcceleratorConfig(
        #         accelerator_count=1, accelerator_type="nvidia-tesla-t4"
        #     )
        # ],
    )

    reservation = compute_v1.Reservation(
        name=reservation_name,
        specific_reservation=compute_v1.AllocationSpecificSKUReservation(
            count=3,  # Number of resources that are allocated.
            # If you use source_instance_template, you must exclude the instance_properties field.
            # It can be a full or partial URL.
            # source_instance_template="projects/[PROJECT_ID]/global/instanceTemplates/my-instance-template",
            instance_properties=instance_properties,
        ),
    )

    # Create a client
    client = compute_v1.ReservationsClient()

    operation = client.insert(
        project=project_id,
        zone=zone,
        reservation_resource=reservation,
    )
    wait_for_extended_operation(operation, "Reservation creation")

    reservation = client.get(
        project=project_id, zone=zone, reservation=reservation_name
    )

    print("Name: ", reservation.name)
    print("STATUS: ", reservation.status)
    print(reservation.specific_reservation)
    # Example response:
    # Name:  your-reservation-name
    # STATUS:  READY
    # count: 3
    # instance_properties {
    #   machine_type: "n1-standard-1"
    #   local_ssds {
    #     disk_size_gb: 375
    #     interface: "NVME"
    #   }
    # ...

    return reservation

Terraform

Verwenden Sie zum Erstellen einer Reservierung für ein einzelnes Projekt die Terraform-Ressource google_compute_reservation.

Wenn Sie beispielsweise eine Reservierung für ein einzelnes Projekt für einen vordefinierten N2-Maschinentyp mit 2 vCPUs erstellen möchten, verwenden Sie die folgende Ressource:


resource "google_compute_reservation" "default" {
  name = "gce-reservation-local"
  zone = "us-central1-a"

  /**
   * To specify a single-project reservation, omit the share_settings block
   * (default) or set the share_type field to LOCAL.
   */
  share_settings {
    share_type = "LOCAL"
  }

  specific_reservation {
    count = 1
    instance_properties {
      machine_type = "n2-standard-2"
    }
  }

  /**
   * To let VMs with affinity for any reservation consume this reservation, omit
   * the specific_reservation_required field (default) or set it to false.
   */
  specific_reservation_required = false
}

Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform mit Google Cloud verwenden.

REST

Zum Erstellen einer Reservierung für ein einzelnes Projekt senden Sie eine POST-Anfrage an die Methode reservations.insert.

Wenn Sie eine Reservierung für ein einzelnes Projekt erstellen möchten, indem Sie Attribute direkt angeben und keine optionalen Felder einbeziehen, stellen Sie die folgende POST-Anfrage:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE"
    }
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Projekts, in dem Sie Ressourcen reservieren möchten.

  • ZONE: die Zone, in der Ressourcen reserviert werden sollen.

  • RESERVATION_NAME: der Name der Reservierung, die erstellt werden soll.

  • NUMBER_OF_VMS: die Anzahl der zu reservierenden VMs.

  • MACHINE_TYPE: Maschinentyp, der für jede VM verwendet werden soll. Wenn Sie einen A3-Maschinentyp angeben, müssen Sie das Feld specificReservationRequired in den Anfragetext einfügen und auf true festlegen. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können. Weitere Informationen finden Sie unter VMs aus einer bestimmten Reservierung nutzen.

Wenn Sie beispielsweise eine Reservierung in Zone us-central1-a für zehn VMs erstellen möchten, die jeweils einen vordefinierten N2-Maschinentyp mit 4 vCPUs verwenden, stellen Sie folgende POST-Anfrage:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

Optional können Sie eine oder mehrere der folgenden Optionen angeben:

  • Wenn Sie GPUs an Ihre reservierten N1-VMs anhängen möchten, fügen Sie das Feld guestAccelerators in den Anfragetext ein.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • NUMBER_OF_ACCELERATORS: die Anzahl der GPUs, die pro reservierter VM hinzugefügt werden sollen.

    • ACCELERATOR_TYPE: ein unterstütztes GPU-Modell für N1-VMs. Das von Ihnen ausgewählte GPU-Modell muss in der Zone verfügbar sein, in der Sie Ressourcen reservieren möchten. Andernfalls schlägt das Erstellen der Reservierung fehl.

  • Wenn Sie jeder reservierten VM eine oder mehrere lokale SSDs hinzufügen möchten, fügen Sie das Feld localSsds im Anfragetext ein. Sie können bis zu 24 lokale SSDs angeben. Jede lokale SSD ist 375 GB groß.

    Wenn Sie beispielsweise beim Erstellen einer Reservierung zwei lokale SSDs angeben möchten, stellen Sie eine Anfrage wie die folgende:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    

    Ersetzen Sie INTERFACE_1 und INTERFACE_2 durch den Schnittstellentyp, den jedes lokale SSD verwenden soll. Geben Sie einen der folgenden Werte an:

    • NVMe-Laufwerkschnittstellen: NVME

    • SCSI-Festplattenschnittstellen: SCSI

    Der von Ihnen für die reservierten VMs angegebene Maschinentyp muss die ausgewählten Laufwerkschnittstellen unterstützen. Andernfalls schlägt das Erstellen der Reservierung fehl. Weitere Informationen finden Sie unter Laufwerkschnittstelle auswählen.

  • Damit die reservierten VMs eine bestimmte Mindest-CPU-Plattform anstelle der Standard-CPU-Plattform der Zone verwenden, fügen Sie das Feld minCpuPlatform im Anfragetext ein.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE",
          "minCpuPlatform": "MIN_CPU_PLATFORM"
        }
      }
    }
    

    Ersetzen Sie MIN_CPU_PLATFORM durch eine Mindest-CPU-Plattform. Um sicherzustellen, dass eine CPU-Plattform in der Zone verfügbar ist, in der Sie Ressourcen reservieren, rufen Sie die verfügbaren CPU-Plattformen nach Zone auf.

  • Wenn Sie eine Richtlinie für kompakte Platzierung angeben möchten, um die Netzwerklatenz zwischen Ihren reservierten VMs zu reduzieren, fügen Sie das Feld resourcePolicies in den Anfragetext ein.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "resourcePolicies": {
        "policy" : "projects/example-project/regions/REGION/resourcePolicies/COMPACT_PLACEMENT_POLICY_NAME"
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        }
      },
      "specificReservationRequired": true
    }
    

    Ersetzen Sie Folgendes:

    • REGION: die Region, in der sich die Richtlinie für kompakte Platzierung befindet. Sie können die Reservierung nur innerhalb der Region der Platzierungsrichtlinie erstellen.

    • COMPACT_PLACEMENT_POLICY_NAME ist der Name einer vorhandenen Richtlinie für kompakte Platzierungen.

    Außerdem sollten Sie Folgendes angeben, um Fehler beim Erstellen einer Reservierung für ein einzelnes Projekt zu vermeiden, die eine Richtlinie für kompakte Platzierung angibt.

    • Ein unterstützter Maschinentyp für Richtlinien für kompakte Platzierung.

    • Das Feld specificReservationRequired ist auf true gesetzt. Dies bedeutet, dass nur VMs, die spezifisch auf diese Reservierung abzielen, sie nutzen können.

  • Wenn Sie angeben möchten, dass nur VMs, die ausdrücklich auf diese Reservierung abzielen, diese verbrauchen können, fügen Sie das Feld specificReservationRequired im Anfragetext ein und legen Sie dafür das Feld auf true fest.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        }
      },
      "specificReservationRequired": true
    }
    
  • Wenn Sie zulassen möchten, dass eine Reservierung von GPU-VMs von benutzerdefinierten Trainingsjobs oder Vorhersagejobs in Vertex AI genutzt wird, senden Sie eine POST-Anfrage an die beta.reservations.insert-Methode. Fügen Sie im Anfragetext das Feld serviceShareType ein und legen Sie es auf ALLOW_ALL fest.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "reservationSharingPolicy": {
        "serviceShareType": "ALLOW_ALL"
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    
  • Wählen Sie eine der folgenden Methoden aus, damit Compute Engine die Reservierung automatisch löschen kann:

    • Wenn Sie die Reservierung zu einem bestimmten Datum und einer bestimmten Uhrzeit löschen möchten, stellen Sie eine POST-Anfrage an die Methode beta.reservations.insert. Geben Sie im Anfragetext das Feld deleteAtTime an.

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAtTime": "DELETE_AT_TIME",
        "name": "RESERVATION_NAME",
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          }
        }
      }
      

      Ersetzen Sie DELETE_AT_TIME durch einen RFC 3339-Zeitstempel für Datum und Uhrzeit, der so aussehen muss:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ersetzen Sie Folgendes:

      • YYYY-MM-DD: ein Datum, formatiert als vierstelliges Jahr, zweistelliger Monat und zweistelliger Tag des Monats und durch Bindestriche (-) getrennt.

      • HH:MM:SS: eine Uhrzeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minuten und zweistellige Sekunden formatiert und durch Doppelpunkte getrennt (:) ist.

      • OFFSET: die Zeitzone, formatiert als Versatz von der koordinierten Weltzeit (Coordinated Universal Time, UTC). Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, geben Sie -08:00 an. Wenn Sie keinen Versatz verwenden möchten, geben Sie Z an.

    • Wenn Sie die Reservierung nach einer bestimmten Dauer löschen möchten, senden Sie eine POST-Anfrage an die Methode beta.reservations.insert. Geben Sie im Anfragetext das Feld deleteAfterDuration an.

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        "name": "RESERVATION_NAME",
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          }
        }
      }
      

      Ersetzen Sie DELETE_AFTER_DURATION durch die Dauer in Sekunden. Geben Sie beispielsweise 86400 für 86.400 Sekunden (1 Tag) an.

Fehlerbehebung

Fehlerbehebung beim Erstellen von Reservierungen.

Nächste Schritte