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

Durch die Kombination von benutzerdefinierten Image-Familien und fortlaufenden Updates können Sie Upgrades von Betriebssystem-Images mit einem Klick in Ihrer verwalteten Instanzgruppe (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.
  • Der Rollout eines Updates für die neue Betriebssystemversion erfolgt automatisch, ohne dass nach der anfänglichen Anfrage zusätzliche Nutzereingaben erforderlich sind.
  • Sie unterstützen Batch-Updates mit einer optionalen Systemdiagnose.

Hinweise

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.

Hinweise

  • Installieren Sie die Google Cloud CLI oder aktualisieren Sie sie 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.

  • Optional können Sie eine anwendungsbasierte Systemdiagnose für Ihre verwaltete Instanzgruppe 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. Aktualisierung überwachen: Verwenden Sie den Unterbefehl wait-until, um zu prüfen, ob das Feld status.versionTarget.isReached der MIG auf true festgelegt 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 eine Liste der Instanzen und ihrer Details zurück, einschließlich Status, Zustand und aktuelle 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 Sie ein Rollback zu einem vorherigen Betriebssystem-Image durchführen müssen, müssen Sie eine Instanzvorlage erstellen und das gewünschte Image angeben. Starten Sie dann ein Rolling Update, um alle verwalteten Instanzen zu aktualisieren, damit sie 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 in der Instanzvorlage eine benutzerdefinierte Image-Familie 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 App nach einem Image-Update nicht reagiert, können Sie den Systemdiagnosestatus in Kombination mit der Einstellung maxUnavailable verwenden, um weitere Rollouts der MIG zu stoppen.

    1. Erstellen Sie eine Systemdiagnose, die auf dem Anfragepfad /health nach einer HTTP-Antwort 200 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 konfigurieren, wie stark die Unterbrechung durch das Update ist. 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. Wenn Sie ein Rollback auf ein früheres Image durchführen müssen, gehen Sie so vor:

    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