Laufzeit von VMs in einer MIG beschränken


In diesem Dokument wird beschrieben, wie virtuelle Maschinen (VMs) in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) automatisch beendet werden. Dazu geben Sie ein Zeitlimit für die VMs an. Außerdem wird beschrieben, wie das Zeitlimit für VMs in einer MIG funktioniert.

Sie können temporäre Arbeitslasten optimieren, indem Sie ein Zeitlimit für die VMs in einer MIG angeben. Wenn eine VM ihr Zeitlimit erreicht, wird diese VM von der MIG automatisch beendet (gelöscht). Wenn Sie die Laufzeit von VMs in einer MIG durch ein Zeitlimit begrenzen, können Sie die Kosten minimieren und das Kontingent freigeben.

Informationen zum Angeben eines Zeitlimits für eine eigenständige VM finden Sie unter Laufzeit einer VM begrenzen. Informationen zum automatischen Hinzufügen oder Löschen von VMs auf Basis Ihrer Arbeitslasten durch eine MIG finden Sie unter Autoscaling von Instanzgruppen.

Hinweise

  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Laufzeit von VMs in einer MIG beschränken

Sie können die Laufzeit von VMs in einer MIG begrenzen, indem Sie in der Instanzvorlage ein Zeitlimit angeben, das für die MIG verwendet wird. Wenn die MIG VMs anhand der Vorlage erstellt, wird das Zeitlimit auf jede VM angewendet.

Es gibt zwei Arten von Zeitlimits:

  • Zeitlimit als Ausführungsdauer
  • Zeitlimit als Beendigungszeit

So legen Sie ein Zeitlimit für die VMs in einer MIG fest:

  1. Erstellen Sie eine Instanzvorlage mit einer Ausführungsdauer für VMs oder mit einer Beendigungszeit für VMs.

  2. Verwenden Sie die Instanzvorlage, um eine MIG zu erstellen oder eine vorhandene MIG zu aktualisieren.

Beschränkungen

  • Wenn Sie eine Instanzvorlage erstellen, um ein Zeitlimit für VMs in einer MIG anzugeben, gelten die folgenden Einschränkungen:

    • Sie können die Beendigungsaktion nicht auf STOP festlegen. MIGs unterstützen nur DELETE.
    • Sie können keine Spot-VMs verwenden.
  • Sie können in einer MIG, die eine Instanzvorlage verwendet, die die VM-Laufzeit begrenzt, keine Anfrage zur Größenänderung erstellen.

  • Sie können die Laufzeit von VMs in einer regionalen MIG nicht begrenzen, wenn die Zielverteilungsform EVEN und die proaktive Umverteilung von Instanzen aktiviert sind.

Instanzvorlage mit einer Ausführungsdauer für VMs erstellen

Wenn Sie VMs in einer MIG automatisch beenden möchten, nachdem sie für eine bestimmte Dauer ausgeführt wurden, legen Sie in der Instanzvorlage eine maximale Ausführungsdauer (maxRunDuration) fest.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Zu Instanzvorlagen

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Wählen Sie den Standort so aus:

    • Wenn Sie die Instanzvorlage regionenübergreifend verwenden möchten, wählen Sie Global.
    • Wenn Sie die regionsübergreifende Abhängigkeit reduzieren möchten, wählen Sie Regional.
  4. Wenn Sie "Regional" ausgewählt haben, wählen Sie die Region, in der Sie die Instanzvorlage erstellen möchten.

  5. Erweitern Sie im Abschnitt Verfügbarkeitsrichtlinien die Option Erweiterte Einstellungen für das VM-Bereitstellungsmodell.

  6. Klicken Sie auf das Kästchen Zeitlimit für die VM festlegen.

  7. Wählen Sie im Feld Zeitlimittyp die Option Nach Stunden (Standardeinstellung) aus, um das Zeitlimit als Dauer anzugeben. Geben Sie im nächsten Feld die Dauer in Stunden ein.

  8. Wählen Sie in der Liste Bei VM-Beendigung den Wert Löschen aus.

  9. Übernehmen Sie für die anderen Felder die Standardwerte oder ändern Sie sie je nach Bedarf.

  10. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Betabefehl instance-templates create. Wenn Sie VMs nach einer bestimmten Dauer automatisch löschen möchten, fügen Sie das Flag --max-run-duration ein und setzen das Flag --instance-termination-action so auf DELETE:

  gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --max-run-duration=DURATION \
      --instance-termination-action=DELETE

Ersetzen Sie Folgendes:

  • INSTANCE_TEMPLATE_NAME ist der Name der Instanzvorlage.
  • DURATION: durch die Dauer, für die die VMs ausgeführt werden sollen. Die MIG löscht die VM automatisch nach der angegebenen Dauer.

    Formatieren Sie die Dauer als Anzahl an Tagen, Stunden, Minuten und Sekunden gefolgt von d, h, m und s. Geben Sie beispielsweise 30m für eine Dauer von 30 Minuten oder 1d2h3m4s für eine Dauer von 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden an. Die Mindestdauer beträgt 30 Sekunden (30s) und die maximale Dauer 120 Tage (120d).

REST

Verwenden Sie die Beta-instanceTemplates.insert-Methode. Wenn Sie VMs nach einer bestimmten Dauer automatisch löschen möchten, fügen Sie das Feld maxRunDuration ein und setzen Sie das Feld instanceTerminationAction so auf DELETE:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "maxRunDuration":
      {
        "seconds": DURATION
      },
      "instanceTerminationAction": "DELETE"
    }
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts, in dem Sie die Instanzvorlage erstellen möchten.
  • INSTANCE_TEMPLATE_NAME ist der Name der Instanzvorlage.
  • MACHINE_TYPE: der vordefinierte oder benutzerdefinierte Maschinentyp für die VMs in der Gruppe.
  • IMAGE_PROJECT: das Image-Projekt, das das Image enthält; Beispiel: debian-cloud.
  • Für IMAGE oder IMAGE_FAMILY muss eine der folgenden Optionen angegeben werden:

    • IMAGE ist eine bestimmte Version des Betriebssystem-Images; Beispiel: debian-10-buster-v20200309.

    • IMAGE_FAMILY ist eine Image-Familie. Damit wird das neueste nicht verworfene Betriebssystem-Image angegeben. Wenn Sie beispielsweise family/debian-10 angeben, wird die neueste Version in der Debian 10-Image-Familie verwendet.

  • DURATION: durch die Dauer, für die die VMs ausgeführt werden sollen. Die MIG löscht die VM automatisch nach der angegebenen Dauer.

    Formatieren Sie die Dauer als Anzahl an Tagen, Stunden, Minuten und Sekunden gefolgt von d, h, m und s. Geben Sie beispielsweise 30m für eine Dauer von 30 Minuten oder 1d2h3m4s für eine Dauer von 1 Tag, 2 Stunden, 3 Minuten und 4 Sekunden an. Die Mindestdauer beträgt 30 Sekunden (30s) und die maximale Dauer 120 Tage (120d).

Instanzvorlage mit einer Beendigungszeit für VMs erstellen

Wenn Sie VMs in einer MIG zu einem bestimmten Zeitpunkt automatisch beenden möchten, legen Sie in der Instanzvorlage eine Beendigungszeit (terminationTime) fest. Sie können ein Datum und eine Uhrzeit festlegen, zu der eine MIG die VMs beenden soll.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Zu Instanzvorlagen

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Wählen Sie den Standort so aus:

    • Wenn Sie die Instanzvorlage regionenübergreifend verwenden möchten, wählen Sie Global.
    • Wenn Sie die regionsübergreifende Abhängigkeit reduzieren möchten, wählen Sie Regional.
  4. Wenn Sie "Regional" ausgewählt haben, wählen Sie die Region, in der Sie die Instanzvorlage erstellen möchten.

  5. Erweitern Sie im Abschnitt Verfügbarkeitsrichtlinien die Option Erweiterte Einstellungen für das VM-Bereitstellungsmodell.

  6. Wählen Sie im Feld Zeitlimittyp die Option Nach Datum aus, um das Zeitlimit als Uhrzeit und Datum anzugeben. Klicken Sie im nächsten Feld auf Datum und Uhrzeit auswählen und wählen Sie Datum, Uhrzeit und Zeitzone für die automatische Kündigung aus.

  7. Wählen Sie in der Liste Bei VM-Beendigung den Wert Löschen aus.

  8. Übernehmen Sie für die anderen Felder die Standardwerte oder ändern Sie sie je nach Bedarf.

  9. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Betabefehl instance-templates create. Wenn Sie VMs zu einem bestimmten Zeitpunkt automatisch löschen möchten, fügen Sie das Flag --termination-time ein und setzen das Flag --instance-termination-action so auf DELETE:

  gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --termination-time=TIME \
      --instance-termination-action=DELETE

Ersetzen Sie Folgendes:

  • INSTANCE_TEMPLATE_NAME ist der Name der Instanzvorlage.
  • TIME ist der Zeitpunkt, zu dem diese VM automatisch beendet werden soll. Die von Ihnen angegebene Zeit muss mindestens 30 Sekunden in der Zukunft und höchstens 120 Tage in der Zukunft liegen. Formatieren Sie die Uhrzeit als RFC 3339-Zeitstempel:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Dabei gilt:

    • YYYY-MM-DD: ein Datum als vierstelliges Jahr formatiert, ein Monat zweistellig und ein Tag eines Monats zweistellig, getrennt durch Bindestriche.
    • HH:MM:SS: eine Zeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minute und zweistellige Sekunde formatiert und durch Doppelpunkte getrennt ist.
    • OFFSET: die Zeitzone formatiert als Versatz der koordinierten Weltzeit (Coordinated Universal Time, UTC) Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, das 8 Stunden vor UTC liegt, geben Sie -08:00 an. Wenn Sie keinen zeitlichen Versatz (UTC+0) verwenden möchten, geben Sie Z an.

REST

Verwenden Sie die Beta-instanceTemplates.insert-Methode. Wenn Sie VMs zu einem bestimmten Zeitpunkt automatisch löschen möchten, fügen Sie das Feld terminationTime ein und setzen das Feld instanceTerminationAction so auf DELETE:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "terminationTime": TIME,
      "instanceTerminationAction": "DELETE"
    }
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Projekts, in dem Sie die Instanzvorlage erstellen möchten.
  • INSTANCE_TEMPLATE_NAME ist der Name der Instanzvorlage.
  • MACHINE_TYPE: der vordefinierte oder benutzerdefinierte Maschinentyp für die VMs in der Gruppe.
  • IMAGE_PROJECT: das Image-Projekt, das das Image enthält; Beispiel: debian-cloud.
  • Für IMAGE oder IMAGE_FAMILY muss eine der folgenden Optionen angegeben werden:

    • IMAGE ist eine bestimmte Version des Betriebssystem-Images; Beispiel: debian-10-buster-v20200309.

    • IMAGE_FAMILY ist eine Image-Familie. Damit wird das neueste nicht verworfene Betriebssystem-Image angegeben. Wenn Sie beispielsweise family/debian-10 angeben, wird die neueste Version in der Debian 10-Image-Familie verwendet.

  • TIME: Der Zeitpunkt, zu dem diese VM automatisch beendet werden soll. Die von Ihnen angegebene Zeit muss mindestens 30 Sekunden in der Zukunft und höchstens 120 Tage in der Zukunft liegen. Formatieren Sie die Uhrzeit als RFC 3339-Zeitstempel:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Dabei gilt:

    • YYYY-MM-DD: ein Datum als vierstelliges Jahr formatiert, ein Monat zweistellig und ein Tag eines Monats zweistellig, getrennt durch Bindestriche.
    • HH:MM:SS: eine Zeit, die als zweistellige Stundenzahl im 24-Stunden-Format, zweistellige Minute und zweistellige Sekunde formatiert und durch Doppelpunkte getrennt ist.
    • OFFSET: die Zeitzone formatiert als Versatz der koordinierten Weltzeit (Coordinated Universal Time, UTC) Wenn Sie beispielsweise Pacific Standard Time (PST) verwenden möchten, das 8 Stunden vor UTC liegt, geben Sie -08:00 an. Wenn Sie keinen zeitlichen Versatz (UTC+0) verwenden möchten, geben Sie Z an.

Funktionsweise des Zeitlimits für VMs in einer MIG

Wenn Sie ein Zeitlimit für VMs in einer MIG angeben, wird der Zeitpunkt, zu dem eine MIG eine VM beendet, automatisch im Feld für den Beendigungszeitstempel (terminationTimestamp) der VM festgelegt.

Basierend auf dem von Ihnen angegebenen Zeitlimit wird der Beendigungszeitstempel einer VM so festgelegt:

  • Zeitlimit als Ausführungsdauer (maxRunDuration):

    terminationTimestamp einer VM = die letzte Erstellung oder Startzeit der VM + maxRunDuration

    Wenn Sie eine Dauer angeben, wird der Beendigungszeitstempel relativ zum letzten Erstellungs- oder Startzeitpunkt der VM festgelegt. Wenn die VM neu erstellt, neu gestartet, fortgesetzt oder ersetzt wird, wird der Beendigungszeitstempel neu berechnet. Der Beendigungszeitstempel kann je nach dem Zeitpunkt, zu dem jede VM zuletzt erstellt oder gestartet wurde, zwischen den VMs in einer MIG variieren. Wenn eine VM beispielsweise repariert wird, wird der Beendigungszeitstempel der VM neu berechnet, indem die Dauer zu der Zeit addiert wird, zu der die VM während der Reparatur neu erstellt wurde.

  • Zeitlimit als Beendigungszeit (terminationTime):

    terminationTimestamp einer VM = terminationTime

    Wenn Sie eine Zeit angeben, wird der Beendigungszeitstempel auf diese Zeit festgelegt, sofern der Zeitpunkt in der Zukunft liegt. Wenn die Beendigungszeit abgelaufen ist, schlägt jede MIG-Aktion, die versucht, eine VM zu erstellen, neu zu starten oder zu ersetzen, mit einem Fehler fehl. Zum Beheben eines solchen Fehlers müssen Sie eine neue Instanzvorlage mit einer Beendigungszeit in der Zukunft erstellen und diese Vorlage auf die MIG anwenden. Wenn Sie die vorhandenen Vorlagenattribute in der neuen Vorlage verwenden möchten, erstellen Sie eine Instanzvorlage auf Basis der vorhandenen Vorlage.

Während einer VM-Aktualisierung ändert sich der Beendigungszeitstempel nicht. Wenn Sie beispielsweise die Unterbrechungsstufe für Aktualisierungen auf REFRESH festlegen, wird der Beendigungszeitstempel beibehalten, wenn die MIG die VM aktualisiert.

Wenn Sie eine VM in einer MIG sperren oder beenden, wird der Beendigungszeitstempel unabhängig von der Art des Zeitlimits automatisch gelöscht. Wenn Sie eine VM fortsetzen oder starten, wird der Beendigungszeitstempel basierend auf der Art des Zeitlimits wieder festgelegt, wie weiter oben in diesem Abschnitt erläutert.

Funktionsweise der automatischen Skalierung, wenn ein Zeitlimit festgelegt ist

Mit Autoscaling kann die MIG VMs bei zunehmender oder abnehmender Last automatisch hinzufügen oder entfernen. Wenn eine MIG VMs löscht, die ihre Beendigungszeitstempel erreicht haben, erstellt die MIG neue VMs, um die vom Autoscaling empfohlene Größe beizubehalten. Die neuen VMs werden für das angegebene Zeitlimit ausgeführt. Wenn das Autoscaling empfohlen wird, die Anzahl der VMs zu reduzieren, löscht die MIG VMs, noch bevor sie ihre Zeitlimits erreichen.

Wenn Sie Skalierungspläne konfiguriert haben, werden die VMs nur bis zum Ende eines Zeitplans oder bis zu ihrem Beendigungszeitstempel ausgeführt, je nachdem, was zuerst eintritt.

Nächste Schritte