Fehlerbehebung bei gleichzeitigen Vorgängen


Wenn Sie versuchen, Ihren Google Kubernetes Engine-Cluster (GKE) oder seine Knotenpools zu ändern, wird Ihre Aktion möglicherweise vorübergehend blockiert, weil ein anderer Vorgang ausgeführt wird. Dieses Problem kann zu Verzögerungen bei wichtigen Updates, der Clusterverwaltung und der Bereitstellung von Anwendungen führen.

Auf dieser Seite erfahren Sie, wie Sie den laufenden Vorgang identifizieren. Wenn Sie den aktiven Vorgang kennen, können Sie die Verzögerung abschätzen und festlegen, wann Sie die Aktion wiederholen sollten.

Diese Informationen sind sowohl für Anwendungsentwickler wichtig, die bei der Bereitstellung oder Änderung von Anwendungen auf diese Beschränkungen stoßen können, als auch für Plattformadministratoren und ‑betreiber, die den gesamten Clusterlebenszyklus und Upgrades verwalten und blockierte administrative Aufgaben beheben müssen. Weitere Informationen zu den gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.

Fehler bei gleichzeitigen Vorgängen

In GKE ist ein Clustervorgang eine Aktion, die den Status der Steuerungsebene oder der Knotenpools Ihres Clusters ändert. Diese Vorgänge werden von GKE verwaltet und können von Ihnen oder von GKE zu Wartungszwecken initiiert werden. Häufige Clusteroperationen sind:

  • Der Cluster wird erstellt oder gelöscht.
  • Die Version der Steuerungsebene des Clusters wird aktualisiert.
  • Knotenpools erstellen, aktualisieren, in der Größe anpassen oder löschen
  • Ändern von Einstellungen auf Clusterebene, z. B. Aktivieren oder Deaktivieren von Funktionen.
  • Automatische Reparaturen der Steuerungsebene, die von GKE initiiert werden.

Wenn Sie Vorgänge für Ihre Cluster ausführen, werden möglicherweise Fehlermeldungen angezeigt, die den folgenden ähneln:

Cluster is running incompatible operation OPERATION_NAME
Cluster is currently being created, deleted, updated or repaired and cannot be updated
Operation OPERATION_NAME is currently ACTIONING cluster CLUSTER_NAME. Please wait and try again once it is done

Diese Fehler können die folgenden Werte enthalten:

  • OPERATION_NAME: die eindeutige ID für einen Vorgang, der bereits in Ihrem Cluster ausgeführt wird. Mit diesem Namen können Sie den Status des vorhandenen Vorgangs verfolgen, der den Start Ihres neuen Vorgangs verhindert.
  • ACTIONING: Die Aktion, die für den Cluster ausgeführt wird. Beispiel: Creatingoder Updating
  • CLUSTER_NAME: Der Name des Clusters, auf den sich der Vorgang bezieht.

Diese Fehler treten auf, weil GKE die Anzahl der Vorgänge, die gleichzeitig ausgeführt werden können, begrenzt, um Konflikte zu vermeiden. Im Allgemeinen lässt GKE nur einen Vorgang auf Clusterebene oder einen Vorgang pro Knotenpool gleichzeitig zu. GKE führt auch eigene automatische Aktionen aus, z. B. Upgrades der Steuerungsebene, die auf dieses Limit angerechnet werden und Sie vorübergehend daran hindern können, eine neue Aufgabe zu starten.

Fehler bei gleichzeitigen Vorgängen beheben

Wenn Sie eine Fehlermeldung erhalten, die darauf hinweist, dass ein anderer Vorgang ausgeführt wird, ermitteln Sie die laufende Aufgabe und warten Sie, bis sie abgeschlossen ist:

  1. Wenn Sie den Namen des blockierenden Vorgangs nicht kennen, können Sie alle laufenden und ausstehenden Vorgänge für Ihren Cluster auflisten:

     gcloud container operations list \
         --location=LOCATION \
         --filter '(targetLink~/clusters/CLUSTER_NAME$ OR targetLink~/clusters/CLUSTER_NAME/) AND status!=DONE' \
         --format json
    

    Ersetzen Sie Folgendes:

    • LOCATION: Die Compute Engine-Region oder -Zone (z. B. us-central1 oder us-central1-a) für den Cluster, je nachdem, ob Ihr Cluster regional oder zonal ist.
    • CLUSTER_NAME: Der Name des Clusters, in dem der Vorgang fehlgeschlagen ist.

      Die Ausgabe sieht etwa so aus:

      {
         "name": "operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff",
         "operationType": "UPDATE_CLUSTER",
         "selfLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff",
         "startTime": "2001-01-01T00:00:00.000000000Z",
         "status": "RUNNING",
         "targetLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME",
         "zone": "LOCATION"
      }
      

      Sehen Sie sich in der Ausgabe das Feld name für jeden Vorgang an. Dieser Wert ist der Name des Vorgangs, der den Start Ihres neuen Vorgangs verhindert. Sie benötigen diesen Wert für den nächsten Schritt.

      Weitere Informationen zu den anderen Feldern in der Ausgabe finden Sie in der API-Dokumentation zu projects.locations.operations.

  2. Warten Sie, bis der Vorgang abgeschlossen ist:

    gcloud container operations wait OPERATION_NAME \
        --location=LOCATION
    

    Ersetzen Sie OPERATION_NAME durch den Namen eines blockierenden Vorgangs aus einer Fehlermeldung oder dem vorherigen Schritt.

    Dieser Befehl überwacht den Vorgang aktiv und wird beendet, wenn der Vorgang abgeschlossen ist.

  3. Wenn der blockierende Vorgang den Status DONE hat, wiederholen Sie den Vorgang, der den Fehler verursacht hat.

Nächste Schritte

  • Wenn Sie in der Dokumentation keine Lösung für Ihr Problem finden, lesen Sie den Abschnitt Support erhalten. Dort finden Sie weitere Hilfe, z. B. zu den folgenden Themen: