你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
终止 Azure Kubernetes 服务 (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 来运行此命令。 Id
参数表示要使用的操作 ID。 例如:
az aks operation show \
--resource-group myResourceGroup \
--name myCluster \
--operation-id "<operation-id>"
尽管当不再需要操作时让其正常终止很重要,但在某些情况下,需要使用 abort 命令释放对具有长时间运行操作的节点池和群集的控制。
AKS 对中止长期运行操作的支持现已正式发布。 此功能允许你收回控制权并无缝运行其他操作。 使用 Azure REST API 或 Azure 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 获取托管群集或获取代理池来验证操作。 应在接受中止请求的几秒钟内将预配状态更新为“已取消”。 托管群集/代理池上最后一次运行操作 ID 的操作状态(可以通过针对托管群集或代理池执行 GET 操作进行检索)应显示为“正在取消”状态。
终止操作时,操作不会回滚到以前的状态,并会停在操作中任何在进行的步骤。 完成后,群集预配状态将显示“已取消”状态。 如果操作恰好是群集升级,则在取消操作期间,它会停在其所在位置。
后续步骤
详细了解容器见解,以了解它如何帮助你监视 Kubernetes 群集和容器工作负载的性能和运行状况。