共用方式為


在 Azure Kubernetes Service (AKS) 叢集上終止長時間執行的作業

有時候,在叢集中節點上的 Pod 內執行的部署或其他程序可能會因為各種原因而長時間執行超過預期。 您可以使用下列 az rest 命令,在 2024-01-02-preview 之後使用任何預覽 API 版本,取得任何進行中作業 (例如建立、升級和調整) 進度的深入解析:

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

此命令提供百分比給您,指出作業的完成程度。 您可使用這個方法來取得叢集上最多 50 項最新作業的深入解析。 "percentComplete" 屬性表示進行中作業的完成程度,如下列範例所示:

"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"

此外也有相當於上述命令的 cli 命令,該命令顯示叢集中最近作業的狀態。

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

以下是範例輸出:

{
  "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"
}

您也可以使用上述輸出中可用的作業識別碼來執行此命令。 Id 參數表示要使用的作業識別碼。 例如:

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

雖然讓作業在不再需要時正常終止很重要,但在某些情況下,您必須使用 abort 命令釋放具有長時間執行作業的節點集區和叢集的控制權。

將長時間執行的作業中止的 AKS 支援現已正式推出。 這項功能可讓您順暢地控制並執行另一個作業。 此設計支援使用 Azure REST APIAzure CLI

中止作業支援下列案例:

  • 如果長時間執行的作業停滯或懷疑處於不良狀態或失敗,則可以中止作業,前提是該作業是受控叢集或代理程式集區上的最後一個執行作業。
  • 如果長時間執行的作業停滯或失敗,則可以中止該作業。
  • 只要作業未先達到終止狀態,就可以中止錯誤觸發的作業。

開始之前

  • Azure CLI 2.47.0 版或更新版本。 執行 az --version 以尋找版本,然後執行 az upgrade 以升級版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

中止長時間執行作業

您可以使用 az aks nodepool 命令搭配 operation-abort 引數,在節點集區或受控叢集上中止作業。

下列範例終止指定叢集上的節點集區上進行的作業。

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

下列範例終止指定叢集上進行的作業。

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

在回應中,會傳回 HTTP 狀態碼 204。

受控叢集或代理程式集區上的佈建狀態應為 [已取消]。 使用 REST API 取得受控叢集取得代理程式集區來驗證作業。 佈建狀態應該會在接受中止要求的幾秒鐘內更新為 [已取消]。 受控叢集/代理程式集區上次執行作業識別碼的作業狀態,可藉由對受控叢集或代理程式集區執行 GET 作業來擷取,應該會顯示 [已取消] 的狀態。

您終止作業時,這不會回復到上一個狀態,而且會在作業中的任何步驟停止。 完成後,叢集佈建狀態會顯示「已取消」 狀態。 如果作業恰好是叢集升級,在取消作業期間,這會在其所在位置停止。

下一步

深入了解容器深入解析,以了解其如何協助您監視 Kubernetes 叢集和容器工作負載的效能和健康情況。