Aktualisierungen von VM-Konfigurationen in einer MIG selektiv anwenden


In diesem Dokument wird beschrieben, wie Sie Konfigurationsaktualisierungen automatisch auf die VM-Instanzen in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) anwenden.

Compute Engine verwaltet die VMs in einer MIG anhand der von Ihnen verwendeten Konfigurationskomponenten: Instanzvorlage, optionale Instanzkonfiguration und optionale zustandsorientierte Konfiguration.

Wenn Sie die VM-Konfiguration einer MIG durch Ändern dieser Komponenten aktualisieren, wendet Compute Engine die aktualisierte Konfiguration automatisch auf neue VMs an, die der Gruppe hinzugefügt werden.

Sie können eine selektive Aktualisierung einrichten, die auch als „opportunistische” Aktualisierungstyp bezeichnet wird, um eine aktualisierte Konfiguration auf vorhandene VMs anzuwenden. Diese Art der Aktualisierung bietet folgende Vorteile:

  • Sie können die VMs auswählen, die Sie aktualisieren möchten.
  • Sie können den Zeitpunkt und die Reihenfolge der Aktualisierungen steuern.
  • Sie können alle VMs sofort mit der gcloud CLI oder REST aktualisieren.

Informationen zum Automatisieren des Rollouts einer neuen Konfiguration für alle oder eine zufällige Teilmenge der VMs in einer MIG finden Sie unter Aktualisierungen der VM-Konfiguration in einer MIG automatisch anwenden. Weitere Informationen finden Sie unter Methoden zum Anwenden einer neuen Konfiguration auf vorhandene VMs.

Hinweise

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

    Wählen Sie 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

Aktualisierte Konfiguration auf ausgewählte VMs anwenden

Legen Sie den Aktualisierungsrichtlinientyp Ihrer Gruppe auf „opportunistisch” fest, damit die MIG keine neue VM-Konfiguration auf vorhandene VMs anwendet. Weitere Informationen finden Sie unter Aktualisierungsrichtlinien Ihrer Gruppe überprüfen.

Verwenden Sie dann die gcloud CLI oder REST, um die Konfiguration Ihrer MIG zu aktualisieren und die neueste Konfiguration auf bestimmte VMs in der Gruppe oder auf alle VMs in der Gruppe anzuwenden.

gcloud

Zum Einrichten einer neuen Instanzvorlage für Ihre Gruppe können Sie den Befehl set-instance-template verwenden.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE

Konfiguration auf bestimmte VMs anwenden

Verwenden Sie den Befehl update-instances mit dem Flag --instances, um die aktualisierte Konfiguration auf bestimmte VMs anzuwenden.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAMES \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

Konfiguration auf alle VMs anwenden

Verwenden Sie den Befehl update-instances mit dem Flag --all-instances, um die aktualisierte Konfiguration auf alle VMs anzuwenden.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --all-instances \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

Dabei gilt:

  • INSTANCE_GROUP_NAME: Name der MIG.
  • INSTANCE_TEMPLATE: Neue Instanzvorlage.
  • INSTANCE_NAMES: Eine Liste der VMs, auf die die Vorlage angewendet werden soll
  • DISRUPTION_LEVEL: Die minimale oder maximale Unterbrechungsstufe: none, refresh, restart oder replace.
    • Standardmäßig ist die Mindestaktion none
    • Standardmäßig ist die umfangreichste erlaubt Aktion replace

REST

Rufen Sie zum Einrichten einer neuen Instanzvorlage für Ihre Gruppe die Methode patch für eine zonale oder regionale MIG auf und aktualisieren Sie das Feld versions.instanceTemplate. Wenn Sie die neue Vorlage nicht automatisch für alle VMs in der Gruppe bereitstellen möchten, setzen Sie das Feld updatePolicy.type auf OPPORTUNISTIC.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "OPPORTUNISTIC"
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  }]
}

Konfiguration auf bestimmte VMs anwenden

Um die aktualisierte Konfiguration auf bestimmte VMs anzuwenden, rufen Sie die Methode applyUpdatesToInstances für Ihre zonale oder regionale MIG auf und geben Sie eine Liste der VMs in der Anfrage an.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
  ],
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Konfiguration auf alle VMs anwenden

Legen Sie das Feld allInstances auf true fest, um die aktualisierte Konfiguration auf alle vorhandenen VMs anzuwenden:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "allInstances": true,
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Dabei gilt:

  • INSTANCE_GROUP_NAME ist der Name der Gruppe
  • NEW_TEMPLATE ist der Name der neuen Vorlage
  • ZONE ist die Zone einer Instanz, die aktualisiert werden soll.
  • INSTANCE_NAME_1 und INSTANCE_NAME_2 sind die Namen der VMs, die aktualisiert werden sollen
  • DISRUPTION_LEVEL: Die minimale oder maximale Unterbrechungsstufe: NONE, REFRESH, RESTART oder REPLACE.
    • Der Standardwert von minimalAction ist NONE.
    • Der Standardwert von mostDisruptiveAllowedAction ist REPLACE.

Ähnlich wie bei anderen Methoden für verwaltete Instanzgruppen sind bei applyUpdatesToInstances die Updates erst einmal nur geplant. Dies bedeutet, dass eine Vorgangsantwort zurückgegeben wird. Der Vorgang kann einige Zeit in Anspruch nehmen.

Nach einer Anfrage können Sie den Status prüfen, um festzustellen, ob die Aktualisierung abgeschlossen ist.

Unterbrechungsstufe während selektiver Aktualisierungen steuern

Je nach Art der Aktualisierung kann diese sich negativ auf den Status einer Instanz auswirken. Beispiel: Wenn Sie das Bootlaufwerk einer Instanz ändern möchten, müssen Sie die Instanz ersetzen. Um das Maß der Unterbrechung während eines selektiven Updates zu steuern, legen Sie folgende Optionen fest:

  • Mindestaktion: Verwenden Sie diese Option, um Unterbrechungen so weit wie möglich zu minimieren oder um eine umfangreichere Aktion als erforderlich anzuwenden.

    • Wenn Sie Unterbrechungen so weit wie möglich einschränken möchten, legen Sie die Mindestaktion auf NONE fest. Wenn ein Update eine umfassendere Aktion erfordert, führt Compute Engine die Aktion aus, die notwendig ist, um das Update auszuführen.
    • Wenn Sie eine umfassendere Aktion anwenden möchten als notwendig, legen Sie die Mindestaktion auf RESTART oder REPLACE fest. So muss Compute Engine zum Beispiel keine VM neu starten, um die Metadaten zu ändern. Wenn Ihre Anwendung Instanzmetadaten nur beim Neustart einer VM liest, können Sie die Mindestaktion auf RESTART festlegen, um Metadatenänderungen zu übernehmen.
  • Umfassendste erlaubte Aktion: Verwenden Sie diese Option, um ein Update zu verhindern, wenn dies zu einer längeren Unterbrechung führen würde, als tragbar ist. Wenn ein Update eine umfassendere Aktion erfordert, als die mit diesem Flag festgelegte, schlägt die Aktualisierungsanfrage fehl. Beispiel: Wenn Sie als umfassendste zulässige Aktion RESTART festlegen, schlägt der Versuch, das Bootlaufwerk-Image zu aktualisieren, fehl. Dieses Update erfordert eine Neuerstellung der Instanz, eine umfassendere Aktion als einen Neustart.

Beim Aktualisieren ausgewählter VMs können diese Optionen die folgenden Werte akzeptieren:

WertBeschreibungWelche Instanzattribute können aktualisiert werden?
NONEDie Instanz wird auf keinerlei Art gestört.
REFRESHDie Instanz wird nicht gestoppt.Zusätzliche Laufwerke, Instanzmetadaten, Labels, Tags
RESTARTDie Instanz wird gestoppt und noch einmal gestartet.Zusätzliche Laufwerke, Instanzmetadaten, Labels, Tags, Maschinentyp
REPLACEDie Instanz wird gelöscht und noch einmal erstellt.Alle Instanzattribute, die in der Instanzvorlage oder der instanzspezifischen Konfiguration gespeichert sind

Die umfangreichste erlaubte Aktion kann nicht weniger umfangreich sein als die Mindestaktion.

Wenn Sie VMs selektiv aktualisieren, gelten folgende Standardeinstellungen:

  • Die standardmäßige Mindestaktion ist NONE, wodurch Störungen so weit wie möglich eingeschränkt werden.
  • Standardmäßig ist die umfassendste erlaubte Aktion REPLACE. Wenn Sie eine solche Störung nicht tolerieren können, sollten Sie die umfassendste erlaubte Aktion auf einen weniger hohen Wert setzen.

Nächste Schritte