Instanzen in einer MIG aktualisieren

In diesem Dokument erfahren Sie, wie Sie aktualisierte Instanzvorlagen und instanzspezifische Konfigurationen auf die VM-Instanzen in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) anwenden.

Sie können aus folgenden Gründen eine neue Instanzvorlage anwenden:

  • Aktualisieren der Anwendung oder des Betriebssystems auf jeder Instanz
  • So führen Sie einen A/B-Test durch, um verschiedene Versionen derselben Anwendung zu vergleichen.
  • So führen Sie ein Canary Update aus, um Unterbrechungen beim Testen einer neuen Version zu minimieren:
  • So können Sie andere Spezifikationen für die Instanzen in der MIG ändern, z. B. den Maschinentyp oder Laufwerksoptionen.

Wenn Sie eine zustandsorientierte MIG verwenden, können Sie auch aktualisierte instanzspezifische Konfigurationen anwenden.

Nachdem Sie die Konfiguration einer MIG aktualisiert haben, können Sie die Updates mit einer der folgenden Methoden auf jede VM in der Gruppe anwenden:

  • Automatisiertes Rolling Update: Die MIG erstellt automatisch eine neue Version einer Instanzvorlage für alle oder eine zufällige Teilmenge von verwalteten Instanzen im MIG. Die MIG wendet außerdem alle nicht angewendeten zustandsorientierten instanzspezifischen Konfigurationen auf die entsprechenden Instanzen an. Das Maß der Unterbrechung der Ausführung von Instanzen hängt von der von Ihnen konfigurierten Update-Richtlinie ab.

  • Selektive Aktualisierung bestimmter Instanzen: Sie können für eine Aktualisierung gezielt ausgewählte Instanzen auswählen. Verwenden Sie diese Methode, wenn Sie die Aktualisierung manuell orchestrieren möchten.

Wenn Sie nur die Größe einer MIG ändern müssen, lesen Sie die Dokumentation zum Hinzufügen oder Entfernen von Instanzen in einer MIG.

Beschränkungen

  • Wenn Sie eine zustandsorientierte MIG haben und automatisierte Rolling Updates verwenden möchten, müssen Sie die Ersetzungsmethode auf RECREATE festlegen.

Zwischen automatischen und selektiven Updates wählen

Wenn Sie eine neue Konfiguration automatisch für alle oder einen Teil der Instanzen in einer MIG einführen möchten, setzen Sie den Aktualisierungstyp der MIG auf PROACTIVE. Wenn ein automatisiertes Update zu störend ist oder Sie mehr Kontrolle über das Update wünschen, legen Sie den Updatetyp der MIG auf OPPORTUNISTIC fest und aktualisieren Sie dann einzelne Instanzen genau.

Automatisierte, proaktive Updates

Das Festlegen des Updatetyps der MIG auf PROACTIVE bietet zwei Hauptvorteile:

  • Der Rollout eines Updates erfolgt automatisch nach Ihren Vorgaben, ohne dass nach der anfänglichen Anfrage zusätzliche Eingaben erforderlich sind. Sie können die Geschwindigkeit der Bereitstellung, den Umfang des Dienstes und den Umfang der Aktualisierung angeben.
  • Sie können partielle Einführungen automatisieren, die Canary-Tests ermöglichen.

Wenn Sie ein proaktives Rolling Update starten, plant die MIG aktiv, die erforderlichen Updates bei Bedarf auf Instanzen anzuwenden. Das bedeutet häufig, dass Instanzen proaktiv gelöscht und neu erstellt werden.

Weitere Informationen finden Sie unter Updates für Instanzen in einer MIG automatisch bereitstellen.

Selektive Updates

Das selektive Aktualisieren bestimmter Instanzen bietet die folgenden Vorteile:

  • Sie können die Instanzen auswählen, die Sie aktualisieren möchten.
  • Sie können den Zeitpunkt und die Reihenfolge der Aktualisierungen steuern.
  • Sie können mit der API alle Instanzen sofort aktualisieren.

Setzen Sie den Aktualisierungstyp der MIG auf OPPORTUNISTIC, um zu verhindern, dass ein proaktives Update mit den selektiven Updates konkurriert.

Opportunistische Updates

Wenn der Updatetyp auf OPPORTUNISTIC gesetzt ist, wendet die MIG Updates nur an, wenn Sie das Update selektiv auf bestimmte Instanzen anwenden oder wenn neue Instanzen von der MIG erstellt werden. Eine MIG erstellt neue Instanzen, wenn die Größe angepasst wird, um Instanzen automatisch oder manuell hinzuzufügen. Compute Engine startet hierbei nicht selbst Anfragen, um opportunistische Aktualisierungen anzuwenden.

In bestimmten Fällen ist eine opportunistische Aktualisierung sinnvoll, um die Stabilität des Systems nicht unnötig zu gefährden. Wenn Sie beispielsweise ein nicht kritisches Update anwenden können, das bei Bedarf angewendet werden kann, und Sie haben eine MIG, die aktiv automatisch skaliert wird, führen Sie eine opportunistische Aktualisierung durch, damit Compute Engine nicht aktiv Ihre vorhandenen Instanzen bereinigt, um das Update anzuwenden. Beim Herunterskalieren werden beim Autoscaling Instanzen mit der alten Vorlage bevorzugt sowie Instanzen, die sich noch nicht im Status RUNNING befinden.

Weitere Informationen finden Sie unter Instanzen selektiv in einer MIG aktualisieren.

Eine opportunistische oder proaktive Aktualisierung einrichten

Updates, die über die Cloud Console oder das gcloud-Befehlszeilentool initiiert werden, sind standardmäßig proaktiv. Das bedeutet, dass sie automatisch gestartet werden, und Updates, die über die Compute Engine API initiiert werden, sind opportunistisch, was bedeutet, dass die MIG die neue Vorlage nicht proaktiv auf vorhandene Instanzen anwendet.

Legen Sie mithilfe der Cloud Console, des gcloud-Befehlszeilentools oder der Compute Engine API fest, ob eine Aktualisierung opportunistisch oder proaktiv ist.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Wählen Sie die MIG aus, die Sie aktualisieren möchten.

  3. Klicken Sie oben auf der Seite auf VMs aktualisieren.

  4. Wählen Sie unter Konfiguration aktualisieren entweder die automatische oder die selektive Aktualisierung aus.

gcloud

Verwenden Sie den Befehl rolling-action start-update und setzen Sie das Flag --type auf opportunistic oder proactive.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE \
    --type=opportunistic|proactive \
    [--zone=ZONE | --region=REGION]

API

Rufen Sie die Methode patch auf einer zonalen oder regionalen MIG-Ressource auf.

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

{
  "updatePolicy": {
    "type": "TYPE" # Choose an opportunistic or proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
    }]
}

Dabei gilt:

  • NEW_TEMPLATE: Name der neuen Vorlage für die Gruppe
  • TYPE: Art der Aktualisierung, OPPORTUNISTIC oder PROACTIVE

Weitere Informationen zum Festlegen einer neuen Vorlage und zum Anwenden dieser Vorlage auf neue und vorhandene Instanzen in einer MIG finden Sie auf den folgenden Seiten:

Beziehung zwischen den Feldern versions und instanceTemplate

Wenn Sie die Compute Engine API verwenden, empfehlen wir die Verwendung der Felder instanceGroupManagers.versions und regionInstanceGroupManagers.versions zum Konfigurieren von Instanzvorlagen für zonale und regionale MIGs.

Die Funktionalität des Legacy-Feldes instanceTemplate überschneidet sich mit dem Feld versions, da Sie mit beiden Feldern angeben können, welche Instanzvorlage die MIG verwendet, um Instanzen zu erstellen. Sie können jedoch nur mit dem Feld versions eine erweiterte (Canary-)Konfiguration mit zwei Vorlagen definieren.

Aus Gründen der Abwärtskompatibilität unterstützen MIGs auch weiterhin das Festlegen des übergeordneten Feldes instanceTemplate. Wir empfehlen jedoch, nur das Feld versions zu verwenden. Die gleichzeitige Verwendung des übergeordneten Feldes instanceTemplate und des Feldes versions kann zu Unklarheiten und Verwirrung führen.

Wenn Sie beim Aufrufen der Methoden update() und patch() sowohl das Feld instanceTemplate als auch das Feld versions angeben, gibt es drei mögliche Ergebnisse:

  • Sie legen für beide Felder den gleichen Wert fest.

    Das ist eine gültige Anfrage. In diesem Fall entsteht keine Mehrdeutigkeit und die neue Instanzvorlage wird auf die MIG angewendet.

    In der folgenden Anfrage geben beispielsweise die oberste Ebene instanceTemplate und das Feld versions die gleiche Instanzvorlage an, die sich von der vorhandenen aktuellen Vorlage unterscheidet, sodass die MIG auf die neue Instanzvorlage aktualisiert wird:

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Sie legen für beide Felder Werte fest, die nicht übereinstimmen, aber nur ein Wert weicht von der aktuellen Instanzvorlage in der MIG ab.

    Das ist eine gültige Anfrage. Das Feld, das von der aktuellen Einstellung abweicht, wird als der gewünschte Wert angewendet. Sie können beispielsweise die Methode update() aufrufen und beide Felder angeben, aber nur ein Feld wird aktualisiert:

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Sie legen für beide Felder Werte fest, die nicht übereinstimmen, und beide Werte unterscheiden sich von der aktuellen Instanzvorlage in der MIG.

    Diese Einstellung ist ungültig und gibt einen Fehler zurück, da kein eindeutiger Intent erkennbar ist.

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

Die Felder versions und instanceTemplate sowie die Methode get()

Wenn Sie nur eine Instanzvorlage angeben, entweder über das übergeordnete Feld instanceTemplate oder über das Feld versions oder über beide, gibt die Methode get() in ihrer Antwort beide Felder zurück. Dadurch wird das neue Feld versions abwärtskompatibel. Solange Sie nur eine Instanzvorlage in einem dieser Felder angeben, ändert sich an der Rückgabe der Methode get() im Feld instanceTemplate nichts.

Enthält das Feld versions dagegen zwei Instanzvorlagen, gibt die Methode get() ein leeres übergeordnetes Feld instanceTemplate zurück. Da es nicht möglich ist, im übergeordneten Feld instanceTemplate eine Canary-Konfiguration mit zwei Instanzvorlagen eindeutig anzugeben, wird dieses bei Canary Updates nicht verwendet.

Das Feld versions und die Methode setInstanceTemplate()

Aus Gründen der Abwärtskompatibilität funktioniert die Methode setInstanceTemplate() wie zuvor, sodass Sie die von der MIG verwendete Vorlage ändern können, um Instanzen zu erstellen. Wenn Sie diese Methode aufrufen, wird das Feld versions mit der Instanzvorlage überschrieben, die durch die Methode setInstanceTemplate() angegeben wird.

Die Methode setInstanceTemplate() legt auch die updatePolicy auf OPPORTUNISTIC fest. Dadurch wird verhindert, dass die MIG aktiv eine Instanzvorlage bereitstellt, die nicht explizit im Feld versions angegeben ist.

Nächste Schritte