Clusterupgrades in Produktionsumgebungen verwalten


Auf dieser Seite erfahren Sie, wie Sie GKE-Clusterupgrades mithilfe von Roll-out-Sequenzierung verwalten. Weitere Informationen finden Sie unter Clusterupgrades mit Roll-out-Sequenzierung.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren.

Roll-out-Sequenz konfigurieren

In diesem Dokument wird erläutert, wie Sie Cluster mit Flotten und Flottenbereichen organisieren und Roll-out-Sequenzen erstellen.

Bei der Roll-out-Sequenzierung wählen Sie die Reihenfolge und den Zeitpunkt für das Roll-out der Versionen auf Clustern aus. Sie können eine Sequenz von bis zu drei Bereichen erstellen.

Zum Erstellen einer Roll-out-Sequenz müssen Ihre Cluster in Bereichen organisiert sein. Eine Anleitung zum Organisieren Ihrer Cluster in Bereichen finden Sie in diesem Beispiel. Sobald sie in Bereichen organisiert sind, können Sie eine Roll-out-Sequenz erstellen, indem Sie die Beziehungen der vorgelagerten Bereiche und die Betriebszeit jedes Bereichs definieren. Weitere Informationen zur Funktionsweise finden Sie unter So wird eine Roll-out-Sequenz erstellt.

Cluster in Bereichen organisieren

Bei einer Roll-out-Sequenz müssen alle Cluster in allen Bereichen in derselben Release-Version registriert sein und dieselbe Nebenversion haben. Wenn diese Anforderungen nicht erfüllt werden und Versionsabweichungen zwischen Clustern auftreten, kann dies zu Problemen mit dem Roll-out der Version führen. Weitere Informationen finden Sie unter Roll-out-Berechtigung.

Bereiche sind eine Organisationseinheit innerhalb einer Flotte. Cluster können bei einer Flotte und in einem Bereich registriert werden, die in einem anderen Projekt gehostet werden. Sie können eine Roll-out-Sequenz mit Bereichen über mehrere Flotten hinweg erstellen.

Wenn Sie Ihre Cluster bereits in Bereichen organisiert haben, können Sie die folgenden Schritte überspringen und mit Roll-out-Sequenz erstellen fortfahren.

  1. Registrieren Sie für jeden Cluster in der Sequenz Ihren Cluster bei einer Flotte. Der Cluster sollte bei der Flotte in dem Projekt registriert sein, in dem Sie den Bereich für diesen Cluster erstellen. Wenn Sie einen Cluster bei einer Flotte in einem anderen Hostprojekt registrieren möchten, müssen Sie die erforderlichen Berechtigungen für die projektübergreifende Registrierung festlegen.
  2. Erstellen Sie 2–3 Bereiche, um Ihre Cluster zu organisieren. Führen Sie den Befehl im Hostprojekt der entsprechenden Flotte des Bereichs aus. Sie können bis zu drei Bereiche in einer Roll-out-Sequenz verwenden. Wiederholen Sie den Befehl für jeden Bereich, den Sie erstellen möchten.

    Eine vollständige Liste der Flags finden Sie in der Referenz zu gcloud alpha container fleet scopes create. Mit dem Befehl create können Sie die Flags in der Anleitung verwenden, um eine Roll-out-Sequenz zu erstellen.

  3. Fügen Sie jeden Cluster zu einem Bereich hinzu.

Roll-out-Sequenz erstellen

Eine Roll-out-Sequenz ist als verknüpfte Liste organisiert. Weitere Informationen finden Sie unter Roll-out-Sequenz erstellen. Wenn Sie eine Roll-out-Sequenz erstellen, legen Sie die folgenden Attribute für jeden Bereich fest:

  • Vorgelagerter Bereich: Der Ressourcenpfad des vorgelagerten Bereichs im Format projects/{project-number}/locations/global/scopes/{scope-name}. Sie legen keinen vorgelagerten Bereich für den ersten Bereich in einer Sequenz fest. Der vorgelagerten Bereich umfasst neue Versionen für den nachgelagerten Bereich.
  • Betriebszeit: Die Betriebszeit für einen Bereich ist die Zeit zwischen dem Abschluss von Upgrades (oder der Dauer von 30 Tagen eines Roll-outs) und dem Zeitpunkt, zu dem Upgrades im nachgelagerten Bereich beginnen können. Weitere Informationen finden Sie unter So funktioniert die Versionsqualifizierung in einem Roll-out.

Sie können diese Attribute beim Erstellen oder Aktualisieren eines Bereichs festlegen. In der folgenden Anleitung wird der Befehl update verwendet. Sie können jedoch dieselben Attribute festlegen, wenn Sie einen Bereich mit dem Befehl create erstellen.

Ersetzen Sie für jeden der folgenden Befehle SOAK_TIME durch die Betriebszeit für den Bereich, den Sie aktualisieren.

  1. Legen Sie die Betriebszeit für den ersten Cluster in der Sequenz fest:

    gcloud alpha container fleet scopes update FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=FIRST_SCOPE_PROJECT_ID
    

    Ersetzen Sie FIRST_SCOPE durch den vollständigen Pfad des ersten Bereichs und FIRST_SCOPE_PROJECT_ID durch die Projekt-ID des Projekts, in dem der erste Bereich gehostet wird.

  2. Legen Sie den vorgelagerten Bereich und die Betriebszeit für den zweiten Bereich in der Sequenz fest:

    gcloud alpha container fleet scopes update SECOND_SCOPE \
        --upstream-scope=projects/FIRST_SCOPE_PROJECT_NUMBER/locations/global/scopes/FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=SECOND_SCOPE_PROJECT_ID
    

    Ersetzen Sie SECOND_SCOPE durch den vollständigen Pfad des ersten Bereichs und SECOND_SCOPE_PROJECT_ID durch die Projekt-ID des Projekts, in dem der zweite Bereich gehostet wird.

  3. Optional: Wenn Sie drei Bereiche in einer Roll-out-Sequenz haben möchten, legen Sie den vorgelagerten Bereich für den dritten Bereich in der Sequenz fest:

    gcloud alpha container fleet scopes update THIRD_SCOPE \
        --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=THIRD_SCOPE_PROJECT_ID
    

    Ersetzen Sie THIRD_SCOPE durch den vollständigen Pfad des ersten Bereichs und THIRD_SCOPE_PROJECT_ID durch die Projekt-ID des Projekts, in dem der dritte Bereich gehostet wird.

Roll-out-Sequenz prüfen

Beschreiben Sie den ersten Bereich in der Sequenz, um die Einstellungen zu bestätigen. Für jeden Bereich können Sie den vorgelagerten und den nachgelagerten Bereich sehen.

Roll-out von Versionen steuern

Clusterupgrades mit GKE bieten eine Reihe von Mechanismen für die manuelle Steuerung des Roll-out- Prozesses. Zusätzlich zu diesen Steuerelementen haben Sie weitere Möglichkeiten, Clusterupgrades mit Roll-out-Sequenzierung zu steuern. In diesem Abschnitt erfahren Sie, wie Sie Upgrades bei Bedarf steuern können.

Status einer Roll-out-Sequenz prüfen

Prüfen Sie den Status einer Roll-out-Sequenz:

gcloud alpha container fleet scopes describe SCOPE_NAME \
    --show-linked-cluster-upgrade
    --project=SCOPE_PROJECT_ID

Ersetzen Sie SCOPE_NAME durch den Namen eines beliebigen Bereichs in der Roll-out-Sequenz und SCOPE_PROJECT_ID durch die Projekt-ID dieses Bereichs. Wenn die Roll-out-Sequenz projektübergreifende Bereiche in verschiedenen Flotten hat, benötigen Sie die erforderlichen Berechtigungen zum Ausführen dieses Befehls.

In der Ausgabe enthalten die Attribute clusterUpgrade(s).spec und clusterUpgrade(s).state zusätzliche Informationen zum Clusterupgrade, z. B. Betriebszeit, Überschreibungen des Clusterupgrades und Upgradestatus. Weitere Informationen dazu, welche Informationen mit diesem Befehl bereitgestellt werden, finden Sie unter Status des Roll-outs einer Version in einer Sequenz prüfen.

Wenn Sie nur Informationen zu einem Bereich in der Sequenz benötigen, ersetzen Sie das Flag --show-linked-cluster-upgrade durch --show-cluster-upgrade.

Eine vollständige Liste der Flags finden Sie in der Referenz zu gcloud alpha container fleet scopes describe.

Führen Sie den folgenden Befehl im Projekt der Flotte aus, um den Status einzelner Cluster innerhalb eines Bereichs aufzurufen:

gcloud alpha container fleet features describe clusterupgrade

Fehler bei der Roll-out-Berechtigung beheben

Wenn alle Cluster in einer Roll-out-Sequenz unterschiedliche Upgrade-Ziele haben, kann GKE die Clusterupgrades möglicherweise nicht fortsetzen, da Cluster im vorgelagerten Bereich das erforderliche Upgrade-Ziel für Cluster im nachgelagerten Bereich nicht validieren.

Prüfen Sie den Status der Roll-out-Sequenz, um festzustellen, ob bei Ihrer Roll-out-Sequenz Probleme auftreten. Wenn ein Bereich nicht berechtigt ist, folgen Sie der Anleitung, um den Status einzelner Cluster in einem Bereich anzuzeigen.

Wenn ein Cluster nicht berechtigt ist, da er eine frühere Version hat (z. B. wird für die meisten Cluster im Bereich ein Upgrade von 1.23 auf 1.24 ausgeführt und ein Cluster hat Version 1.22), können Sie manuell ein Upgrade auf 1.24 ausführen, um die Versionsabweichung zu beheben.

Wenn ein Cluster nicht berechtigt ist, da er eine höhere Version hat (Beispiel: Die meisten Cluster im Bereich werden von 1.23 auf 1.24 aktualisiert und ein Cluster hat Version 1.25), können Sie kein manuelles Upgrade für den Cluster ausführen, um die Versionsabweichung zu lösen.

Entfernen Sie alle Cluster mit dem Status INELIGIBLE, indem Sie der Anleitung unter Teilweise berechtigte Roll-outs voranbringen folgen, um Clusterupgrades sofort fortzusetzen.

Betriebszeit ändern

Wenn die Betriebszeit für ein bestimmtes Roll-out von der Version abweichen soll, die für die Sequenz konfiguriert wurde, können Sie diese mit dem Flag --add-upgrade-soaking-override mit dem folgenden Befehl ändern:

gcloud alpha container fleet scopes update SCOPE_NAME \
    --add-upgrade-soaking-override=SOAK_TIME \
    --upgrade-selector=name=UPGRADE_NAME,version=VERSION

Dabei gilt:

  • SCOPE_NAME: der Name des Bereichs, für den Sie die Betriebszeit überschreiben möchten, die für das Versions-Roll-out einer bestimmten Version verwendet wird.
  • SOAK_TIME: die Betriebszeit, die nicht der Standardeinstellung entspricht (z. B. "0d", wenn Sie die Betriebszeit für ein Roll-out einer Version überspringen möchten).
  • UPGRADE_NAME: der Name des Upgrades kann k8s_control_plane oder k8s_node sein.
  • VERSION: die GKE-Version, in der die Betriebszeit nach dem Roll-out in diesem Bereich ausgeführt werden soll, z. B. 1.25.2-gke.400.

Wenn Sie beispielsweise bereits eine neue Version qualifiziert haben und bereit sind, mit Upgrades im nächsten Bereich zu beginnen, können Sie die Betriebszeit auf null setzen. Sie können sie auch verwenden, wenn Sie mehr Zeit als die Standarddauer benötigen, um eine bestimmte Version zu qualifizieren.

Reihenfolge einer Sequenz ändern

Wenn Sie die Reihenfolge einer Sequenz ändern möchten, verwenden Sie die Befehle aus der Anleitung unter Roll-out-Sequenz erstellen, um die vorgelagerten Bereiche zu aktualisieren.

Abschluss des Roll-outs der Version im Bereich verzögern

Wenn Sie vorübergehend verhindern möchten, dass ein Bereich das Roll-out einer neuen Version in seinen Clustern abschließt, können Sie jedem Cluster einen Wartungsausschluss hinzufügen, für die noch keine Upgrades auf die Zielversion ausgeführt wurden. Dies kann dazu führen, dass ein Bereich bis zu 30 Tage lang bis zu seiner Betriebszeit oder bis zum nachgelagerten Bereich nicht fortgesetzt werden kann. Nach 30 Tagen beginnt die Betriebszeit des Bereichs.

Sie können auch die Betriebszeit für diesen Bereich auf 30 Tage ändern, um die Betriebszeit der Roll-out-Sequenz bis zur Fortsetzung mit dem nächsten Bereich zu maximieren.

Wenn Sie Upgrades für den nächsten Bereich weiter verzögern müssen, können Sie für die Cluster im nächsten Bereich Wartungsausschlüsse verwenden.

Teilweise berechtigte Roll-outs voranbringen

Wenn Clusterupgrades für einen Bereich die 30-Tage-Grenze noch nicht erreicht haben und aufgrund von Problemen mit der Roll-out-Berechtigung nicht abgeschlossen werden (z. B. Versionsabweichungen innerhalb eines Bereichs), können Sie einen Cluster aus einem Bereich entfernen, um das Versions-Roll-out abzuschließen und mit der Betriebszeit zu beginnen, oder mit dem nächsten Bereich in der Roll-out-Sequenz fortfahren. Sie können einen Cluster auch aus anderen Gründen aus einem Bereich entfernen, z. B. wenn die Nutzung dieses Clusters nicht mehr mit den anderen Clustern im Bereich zusammenhängt.

Folgen Sie der Anleitung unter Cluster aus Bereichen entfernen.

Nachdem Sie alle Cluster entfernt haben, die den Abschluss des Versions-Roll-outs eines Bereichs verhindern, wird das Versions-Roll-out des Bereichs abgeschlossen. Bestätigen Sie dies mithilfe der Anleitung unter Status eines Versions-Roll-outs prüfen.

Sequenz löschen

Verwenden Sie zum Löschen einer Sequenz den folgenden Befehl, um die Zuordnung des vorgelagerten Bereichs für den zweiten Bereich (und den dritten Bereich, wenn diese Roll-out-Sequenz drei Bereiche enthält) zu entfernen:

gcloud alpha container fleet scopes update SCOPE_NAME --reset-upstream-scope

Ersetzen Sie SCOPE_NAME durch den Namen des Bereichs, den Sie löschen möchten.

Bereinigen

Um unerwartete Kosten zu vermeiden, sollten Sie die API nach dem Testen in der privaten Vorschau deaktivieren, wenn Sie sich für eine kostenlose Testversion der Anthos API angemeldet haben, um das Feature für die Roll-out-Sequenzierung in der privaten Vorschau zu testen. Sie müssen die API deaktivieren, bevor Ihr Flotten-Hostprojekt aus der Zulassungsliste für diese Funktion entfernt wird.

Nächste Schritte