Freigeben über


Beenden eines zeitintensiven Vorgangs in einem AKS-Cluster (Azure Kubernetes Service)

Es kann aus verschiedenen Gründen vorkommen, dass Bereitstellungsvorgänge oder andere Prozesse, die innerhalb von Pods auf Knoten in einem Cluster ausgeführt werden, unerwartet lange dauern. Sie können mithilfe einer beliebigen Vorschau-API-Version nach 2024-01-02-preview einen Einblick in den Status eines laufenden Vorgangs (z. B. Erstellen, Aktualisieren und Skalieren) erhalten. Verwenden Sie dazu den folgenden az rest-Befehl:

export ResourceID="<cluster-resource-id>"
az rest --method get --url "https://management.azure.com$ResourceID/operations/latest?api-version=2024-01-02-preview"

Mit diesem Befehl erhalten Sie einen Prozentsatz, der angibt, wie nahe der Vorgang dem Abschluss ist. Mit dieser Methode können Sie diese Erkenntnisse für bis zu 50 der letzten Vorgänge in Ihrem Cluster abrufen. Das Attribut „percentComplete“ gibt den Fortschritt des laufenden Vorgangs an, wie im folgenden Beispiel gezeigt:

"id": "/subscriptions/<subscription-id>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/contoso/operations/<operation-id>",
  "name": "<operation-id>",
  "percentComplete": 10,
  "startTime": "2024-04-08T18:21:31Z",
  "status": "InProgress"

Es gibt auch eine CLI-Befehlsentsprechung für den obigen Befehl, der den Status des letzten Vorgangs im Cluster anzeigt.

az aks operation show-latest \
    --resource-group myResourceGroup \
    --name myCluster

Nachfolgend sehen Sie eine Beispielausgabe:

{
  "endTime": null,
  "error": null,
  "id": "/subscriptions/<subscription-id>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/contoso/operations/<operation-id>",
  "name": "<operation-id>",
  "operations": null,
  "percentComplete": 1.0,
  "resourceGroup": "myResourceGroup",
  "resourceId": null,
  "startTime": "2024-06-12T18:16:21+00:00",
  "status": "InProgress"
}

Sie können diesen Befehl auch mit der in der obigen Ausgabe verfügbaren Vorgangs-ID ausführen. Der Parameter Id gibt die zu verwendende Vorgangs-ID an: Zum Beispiel:

az aks operation show \
    --resource-group myResourceGroup \
    --name myCluster \
    --operation-id "<operation-id>"

Vorgänge sollten zwar ordnungsgemäß beendet werden, wenn sie nicht mehr benötigt werden, es gibt allerdings Situationen, in denen Sie die Steuerung von Knotenpools und Clustern mit zeitintensiven Vorgängen mithilfe eines Abbruchbefehls (abort) freigeben müssen.

Die AKS-Unterstützung für das Abbrechen von zeitintensiven Vorgängen ist jetzt allgemein verfügbar. Mit diesem Feature können Sie die Kontrolle wieder übernehmen und einen anderen Vorgang problemlos ausführen. Dies wird über die Azure-REST-API und über die Azure CLI unterstützt.

Der Abbruchvorgang unterstützt folgende Szenarien:

  • Wenn ein zeitintensiver Vorgang hängen bleibt oder sich wahrscheinlich in einem fehlerhaften Zustand befindet oder nicht erfolgreich ist, kann der Vorgang abgebrochen werden, sofern es sich um den letzten ausgeführten Vorgang im verwalteten Cluster oder Agentpool handelt.
  • Wenn ein zeitintensiver Vorgang hängen bleibt oder nicht erfolgreich ist, kann dieser Vorgang abgebrochen werden.
  • Ein irrtümlich ausgelöster Vorgang kann abgebrochen werden, solange noch kein Endzustand des Vorgangs erreicht wurde.

Voraussetzungen

  • Azure CLI-Version 2.47.0 oder höher. Führen Sie az --version aus, um die Version zu finden, und führen Sie az upgrade aus, um ein Upgrade für die Version durchzuführen. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Abbrechen eines zeitintensiven Vorgangs

Sie können den Befehl az aks nodepool mit dem Argument operation-abort verwenden, um einen Vorgang in einem Knotenpool oder in einem verwalteten Cluster abzubrechen.

Das folgenden Beispiel beendet einen Vorgang in einem Knotenpool auf einem angegebenen Cluster.

az aks nodepool operation-abort \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool 

Das folgenden Beispiel beendet einen Vorgang auf einem angegebenen Cluster.

az aks operation-abort \
    --name myAKSCluster \
    --resource-group myResourceGroup

In der Antwort wird der HTTP-Statuscode 204 zurückgegeben.

Der Bereitstellungsstatus im verwalteten Cluster oder Agentpool muss Abgebrochen lauten. Verwenden Sie die REST-API zum Abrufen verwalteter Cluster oder die REST-API zum Abrufen von Agentpools, um den Vorgang zu überprüfen. Der Bereitstellungsstatus sollte nach Akzeptierung der Abbruchanforderung innerhalb weniger Sekunden auf Abgebrochen aktualisiert werden. Der Vorgangsstatus der zuletzt ausgeführten Vorgangs-ID auf dem verwalteten Cluster/Agentpool, der durch einen GET-Vorgang auf den verwalteten Cluster oder Agentpool abgerufen werden kann, sollte den Status Wird abgebrochen haben.

Wenn Sie einen Vorgang beenden, wird kein Rollback auf den vorherigen Zustand ausgeführt, sondern bleibt bei dem Schritt stehen, in dem sich der Vorgang gerade befindet. Nach Abschluss des Vorgangs zeigt der Clusterbereitstellungsstatus den Status Abgebrochen an. Wenn es sich bei dem Vorgang um ein Clusterupgrade handelt, wird er bei einem Abbruchvorgang an der Stelle beendet, an der er sich befindet.

Nächste Schritte

Die Übersicht über Container Insights enthält weitere Informationen dazu, wie das Feature Ihnen dabei hilft, die Leistung und Integrität Ihres Kubernetes-Clusters und Ihrer Containerworkloads zu überwachen.