Upgrades von Betriebssystem-Images mit einem Klick in MIGs durchführen

Mit einer Kombination aus benutzerdefinierten Image-Familien und Rolling Updates können Sie Betriebssystem-Image-Upgrades mit einem Klick für Ihre verwaltete Instanzgruppe (Managed Instance Group, MIG) aktivieren.

Betriebssystem-Image-Upgrades mit einem Klick bieten unter anderem diese Vorteile:

  • Sie funktionieren bei allen VM-Typen und allen Instanzgruppengrößen.
  • Sie unterstützen sowohl Windows- als auch Linux-Images und -Container.
  • Instanzen werden anhand ihrer aktuellen Instanzvorlage oder optional anhand einer neuen Vorlage neu erstellt, sodass Sie benutzerdefinierte Startskripts und Metadaten beibehalten können.
  • Funktioniert mit zustandsorientierten MIGs, sodass Sie optional Daten auf Nicht-Bootlaufwerken beibehalten können.
  • Das Update auf die neue Betriebssystemversion erfolgt automatisch, ohne dass nach der ersten Anfrage zusätzliche Nutzereingaben erforderlich sind.
  • Sie unterstützen Batch-Updates mit einer optionalen Systemdiagnose.

Wie funktionieren Betriebssystem-Image-Upgrades mit einem Klick?

Wenn Sie ein Update aufrufen, ersetzt die MIG die Bootlaufwerke aller VMs in der Gruppe durch die neueste Version des Betriebssystem-Images aus Ihrer benutzerdefinierten Image-Familie. Die MIG behält Metadaten und Startskripts bei, die Sie in der Instanzvorlage für jede VM in der Gruppe eingerichtet haben. Nicht-Bootlaufwerke werden anhand ihrer Spezifikation in der Instanzvorlage neu erstellt. Informationen zum Speichern von Daten finden Sie unter Zustandsorientierte Laufwerke in MIGs konfigurieren.

Zur Begrenzung von Anwendungsunterbrechungen können Sie stapelweise aktualisieren, wobei ein bestimmter Prozentsatz der VMs weiterhin ausgeführt wird. Wenn Sie die Zuverlässigkeit erhöhen möchten, können Sie für die MIG eine anwendungsbasierte Systemdiagnose konfigurieren: Die Gruppe wartet darauf, dass die Fehlerfreiheit einer Anwendung auf aktualisierten VMs gemeldet wird, bevor sie weitere Updates für andere VMs durchführt.

Hinweis

  • Installieren Sie das gcloud-Befehlszeilentool oder aktualisieren Sie es auf die neueste Version.

  • Achten Sie darauf, dass Sie eine Instanzvorlage erstellt haben, die auf eine Image-Familie verweist. Google empfiehlt die Verwendung benutzerdefinierter Image-Familien, um das Risiko der Einführung einer Image-Version zu verringern, die mit Ihrer Anwendung nicht kompatibel ist. Sie können dafür sorgen, dass nur kompatible Image-Versionen eingeführt werden, indem Sie Ihrer benutzerdefinierten Image-Familie Images erst nach einem Kompatibilitätstest mit Ihrer Anwendung hinzufügen.

    Wenn Ihre Instanzvorlage auf eine Image-Familie verweist, erstellt die MIG Instanzen immer anhand des neuesten Images in der Familie. Beispiel:

    • Wenn die MIG neue Instanzen hinzufügt, weil Sie oder das Autoscaling der MIG die Größe der MIG erhöht haben.
    • Wenn die MIG eine Instanz neu erstellt, weil dieser Vorgang manuell ausgelöst wurde oder für eine automatische Reparatur erforderlich ist.
  • Testen Sie das neue Image mit Ihrer Anwendung, bevor Sie es zu Ihrer Image-Familie hinzufügen und einführen.

  • Sie können eine anwendungsbasierte Systemdiagnose für Ihre MIG erstellen. Mit einer anwendungsbasierten Systemdiagnose wird überprüft, ob Ihre Anwendung auf allen VMs in der MIG wie erwartet reagiert. Sie können das Update so konfigurieren, dass nur eine nicht verfügbare VM zulässig ist. Wenn eine Anwendung nicht wie erwartet reagiert, markiert die MIG diese VM als nicht verfügbar und die Einführung wird nicht fortgesetzt.

Betriebssystem-Image-Upgrades mit einem Klick für MIGs durchführen

So aktualisieren Sie alle VMs in einer MIG auf das neueste Image aus einer benutzerdefinierten Image-Familie:

  1. Starten Sie eine rollierende Ersetzung mit diesem Befehl:

    gcloud compute instance-groups managed rolling-action replace instance-group-name \
        [--max-surge=max-surge ] [--max-unavailable=max-unavailable]

    Ersetzen Sie Folgendes:

    • instance-group-name: Der Name der MIG, mit der gearbeitet werden soll.
    • max-surge: Die maximale Anzahl zusätzlicher VMs, die während des Aktualisierungsvorgangs vorübergehend erstellt werden können. Dies kann eine feste Zahl (z. B. 5) oder ein Prozentsatz der Größe der MIG (z. B. 10%) sein.
    • max-unavailable: Die maximale Anzahl an VMs, die während des Aktualisierungsvorgangs nicht verfügbar sein dürfen. Dies kann eine feste Zahl (5) oder ein Prozentsatz der Größe der MIG (10%) sein.

    Sie können Systemdiagnosen mit den Optionen --max-unavailable und --max-surge kombinieren, um weitere Updates zu verhindern, wenn diese die Verfügbarkeit von VMs beeinträchtigen.

  2. Überwachen Sie das Update, indem Sie mit dem Unterbefehl wait-until prüfen, ob das Feld status.versionTarget.isReached der MIG auf true gesetzt ist.

    gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached

    Ersetzen Sie Folgendes:

    • instance-group-name: Der Name der MIG, mit der gearbeitet werden soll.

    Der Befehl wird beantwortet, wenn die Gruppe aktualisiert wurde.

    Sie können auch Instanzen auflisten, um den Status der einzelnen Instanzen zu sehen.

    gcloud compute instance-groups managed list-instances instance-group-name

    Der Befehl gibt für jede VM eine Liste von Instanzen sowie deren Details zurück, einschließlich des Status, des Ergebnisses der Systemdiagnose und der aktuellen Aktionen für jede VM. Wenn alle VMs den Status RUNNING und keine aktuelle Aktion haben, ist die MIG auf dem neuesten Stand und stabil.

  3. Wenn ein Rollback auf ein früheres Betriebssystem-Image erforderlich ist, müssen Sie eine Instanzvorlage erstellen und das gewünschte Image angeben. Starten Sie dann ein Rolling Update, das dafür sorgt, dass alle verwalteten Instanzen diese Vorlage verwenden. Weitere Informationen finden Sie unter Rollback für Aktualisierung durchführen.

Beispiel

In diesem Beispiel werden die folgenden Aufgaben behandelt:

  1. Instanzvorlage für einfache Betriebssystem-Image-Updates erstellen:
    • Geben Sie eine benutzerdefinierte Image-Familie in der Instanzvorlage an.
  2. Erstellen Sie eine MIG anhand der Vorlage.
  3. Richten Sie eine Systemdiagnose ein, um Unterbrechungen durch ein Image-Update zu begrenzen.
  4. Fügen Sie einer Image-Familie ein neues Image hinzu.
  5. Rufen Sie ein Betriebssystem-Update mit einem einzigen Befehl auf.
  6. Überwachen Sie das Update.

Aktivieren und führen Sie Betriebssystem-Upgrades mit einem Klick für eine MIG mit diesen Schritten durch:

  1. Erstellen Sie eine Instanzvorlage, in der eine benutzerdefinierte Image-Familie angegeben ist. Die Image-Familie sollte getestete und vertrauenswürdige Images enthalten. Jede VM, die von der MIG anhand dieser Vorlage erstellt wird, verwendet das neueste verfügbare Image dieser Familie.

    gcloud compute instance-templates create example-template \
        --machine-type n1-standard-4 \
        --image-family my-image-family \
        --image-project my-project \
        --tags=http-server
    
  2. Erstellen Sie eine MIG anhand der Instanzvorlage. In diesem Beispiel wird die MIG mit drei auf example-template beruhenden Instanzen gestartet. Da die Instanzvorlage eine Image-Familie angibt, erstellt die MIG jede VM mit dem neuesten Image aus der Familie.

    gcloud compute instance-groups managed create example-group \
      --base-instance-name example \
      --size 3 \
      --zone us-east1-b \
      --template example-template
    
  3. Optional: Konfigurieren und aktivieren Sie eine anwendungsbasierte Systemdiagnose. Wenn Ihre Anwendung nach einem Image-Update nicht mehr reagiert, können Sie mit dem Status der Systemdiagnose in Verbindung mit der Einstellung maxUnavailable eine weitere Einführung der MIG verhindern.

    1. Erstellen Sie eine Systemdiagnose, die im Anfragepfad /health nach einer HTTP-200-Antwort sucht. Die GitHub-Anwendung, die sich auf der jeweiligen Instanz befindet, verwendet diesen Pfad.

      gcloud compute health-checks create http example-autohealer-check \
          --check-interval 10 \
          --timeout 5 \
          --healthy-threshold 2 \
          --unhealthy-threshold 3 \
          --request-path "/health"
      
    2. Erstellen Sie eine Firewallregel, damit die Systemdiagnoseprüfungen auf die Instanzen zugreifen können. Die Systemdiagnoseprüfungen stammen von Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16.

      gcloud compute firewall-rules create default-allow-http-health-check \
          --network default \
          --allow tcp:80 \
          --source-ranges 130.211.0.0/22,35.191.0.0/16
      
    3. Fügen Sie die Systemdiagnose zur MIG hinzu.

      gcloud compute instance-groups managed update example-group \
          --zone us-east1-b --health-check example-autohealer-check
      
  4. Wenn ein Update verfügbar, getestet und mit Ihrer Anwendung kompatibel ist, erstellen Sie ein neues Image und nehmen Sie dieses Image mit dem Flag --family in die benutzerdefinierte Image-Familie auf.

    gcloud compute images my-image-v2 \
        --source-disk boot-disk-1 \
        --source-disk-zone us-central1-f \
        --family my-image-family

    In diesem Beispiel ist my-image-v2 das neueste Image in my-image-family. Es beruht auf dem Quelllaufwerk boot-disk-1.

  5. Rufen Sie eine rollierende Ersetzung auf, um alle VMs in der MIG zu ersetzen. Die MIG ersetzt jede VM anhand der Instanzvorlage der Gruppe. In der Instanzvorlage ist my-image-family angegeben. Daher ruft jede VM das neueste Image in der Familie (my-image-v2) ab.

    Sie können das Maß der Unterbrechung konfigurieren, die durch das Update verursacht wird. In diesem Beispiel erstellt die MIG eine zusätzliche VM über die Zielgröße der Gruppe hinaus und entfernt keine vorhandenen VMs, bis diese eine VM ausgeführt wird.

    gcloud compute instance-groups managed rolling-action replace example-group \
        --max-surge 1 --max-unavailable 0
    
  6. Überwachen Sie den Status der Updates mit dem Befehl wait-until zusammen mit dem Flag --version-target-reached. Der Befehl wird beantwortet, wenn die Gruppe aktualisiert wurde.

    gcloud compute instance-groups managed wait-until --version-target-reached example-group \
        --zone us-east1-
    Waiting for group to reach version target
    ...
    Version target is reached
    

    Sie können mit dem Befehl list-instances auch für jede VM den Status, das Ergebnis der Systemdiagnose, die aktuellen Aktionen, die Instanzvorlage und die Version abrufen.

    gcloud compute instance-groups managed list-instances example-group \
        --zone us-east1-b
    
    
    NAME       ZONE        STATUS   HEALTH_STATE  ACTION     INSTANCE_TEMPLATE  VERSION_NAME                        LAST_ERROR
    test-211p  us-east1-b  RUNNING  HEALTHY       NONE       example-template   0/2020-01-30 13:34:28.843377+00:00
    test-t5qb  us-east1-b  RUNNING  UNKNOWN       VERIFYING  example-template   0/2020-01-30 13:34:28.843377+00:00
    test-x331  us-east1-b  RUNNING  HEALTHY       NONE       example-template   0/2020-01-20 20:39:51.819399+00:00
    
  7. So können Sie bei Bedarf ein Rollback auf ein früheres Image durchführen:

    1. Erstellen Sie eine neue Instanzvorlage, in der das gewünschte Image angegeben ist.
    2. Starten Sie ein Rolling Update, um die Instanzvorlage anzuwenden.

Nächste Schritte