Knotenupgrades und Kontingente prüfen

Übersicht

Alle erstellten Knoten unterliegen dem Ressourcenkontingent Ihres Projekts. Jeder Knotenpool, der mit einer bestimmten Reservierungsaffinität erstellt wird, unterliegt über seine gesamte Lebensdauer der Kapazität der Reservierung.

Da bei Surge-Upgrades zusätzliche VMs erstellt werden, bevor alte Knoten geleert und gelöscht werden, können Upgrades fehlschlagen, wenn Ihr Projekt nicht genügend Ressourcenkontingente oder Reservierungen hat („Kontingent“ bezieht sich in diesem Artikel auf beides).

Wenn die verfügbaren Kontingente unter der in maxSurge angegebenen Anzahl von Knoten liegen, ist die Anzahl der parallelen Upgrades geringer als maxSurge und maxUnavailable. Sollten Sie nicht über ausreichend Kontingente zum Erstellen eines einzelnen Knotens verfügen und sollte maxUnavailable auf 0 gesetzt sein, schlägt das Upgrade fehl.

In der folgenden Tabelle werden verschiedene Verhaltensbeispiele für Upgrades beschrieben:

Upgrade-Einstellungen Anzahl der nach Kontingent zulässigen zusätzlichen Knoten Ergebnis
maxSurge: 5 maxUnavailable: 0 5 Führt für fünf Knoten parallel ein Upgrade durch.
maxSurge: 5 maxUnavailable: 0 2 Führt für nur zwei Knoten parallel ein Upgrade durch.
maxSurge: 5 maxUnavailable: 0 0 Upgrade schlägt fehl, da keine zusätzlichen Knoten eingerichtet werden können und die Upgrade-Einstellungen den Neustart bestehender Knoten nicht zulassen.
maxSurge: 5 maxUnavailable: 1 5 Führt für sechs Knoten parallel ein Upgrade durch und stellt gleichzeitig sicher, dass der Knotenpool aufgrund des Upgrades vorübergehend nur einen Knoten verliert.
maxSurge: 5 maxUnavailable: 1 2 Führt nur für drei Knoten parallel ein Upgrade durch und stellt gleichzeitig sicher, dass dem Knotenpool aufgrund des Upgrades nicht mehr als ein Knoten fehlt.
maxSurge: 5 maxUnavailable: 1 0 Führt nur für jeweils einen Knoten ein Upgrade durch, indem jeder Knoten wie bei einem Rolling Upgrade neu erstellt wird.

Kontingente prüfen

Weitere Informationen zu Ihren Upgradevorgängen sowie darüber, ob und warum Upgrades fehlgeschlagen sind, finden Sie in den Vorgangsobjekten der Upgrades. Führen Sie den folgenden Befehl aus, um die Upgrade-Vorgangsobjekte aufzulisten:

gcloud container operations list --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/[PROJECT_ID]/zones/[ZONE]/clusters/[CLUSTER_NAME]"

Wenn das letzte Upgrade aufgrund unzureichender Ressourcenkontingente fehlgeschlagen ist, sieht die Ausgabe in etwa so aus:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

Wenn der Grund eine unzureichende Reservierung war, sieht die Ausgabe so aus:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

Upgradefehler beheben

Wenn Ihr Upgrade aufgrund von Kontingenten fehlgeschlagen ist, haben Sie drei Möglichkeiten:

  1. Prüfen Sie, ob Compute Engine-Ressourcen in Ihrem Projekt vorhanden sind, die das Kontingent nutzen, aber nicht mehr benötigt werden. Wenn Sie welche finden, entfernen Sie sie und wiederholen Sie das Upgrade.
  2. Wenn das Upgrade auch nach Durchführung von Schritt 1 fehlschlägt, fordern Sie eine Kontingenterhöhung an oder erhöhen Sie die Größe der spezifischen Reservierung.
  3. Wenn aus irgendeinem Grund keine Erhöhung des Kontingents möglich ist, ändern Sie maxUnavailable zu 1, um die Blockierung der Upgrades aufzuheben. Diese Option sollte nur als letztes Mittel verwendet werden, da es eine Best Practice ist, maxUnavailable = 0 beizubehalten, um Unterbrechungen durch Upgrades zu minimieren.

Nächste Schritte