Compartir a través de


Finalización de una operación de larga duración en un clúster de Azure Kubernetes Service (AKS)

A veces, la implementación u otros procesos que se ejecutan dentro de pods en nodos de un clúster se pueden ejecutar durante períodos de tiempo más largos de lo esperado debido a varias razones. Puede obtener información sobre el progreso de cualquier operación en curso, como crear, actualizar y escalar, mediante cualquier versión preliminar de la API después de 2024-01-02-preview mediante el comando az rest:

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

Este comando proporciona un porcentaje que indica la proximidad de la operación a la finalización. Puede usar este método para obtener estas conclusiones hasta 50 de las operaciones más recientes en el clúster. El atributo "percentComplete" indica la extensión de finalización de la operación en curso, como se muestra en el ejemplo siguiente:

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

También hay un comando de cli equivalente para el anterior que muestra el estado de la operación más reciente en el clúster.

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

A continuación se muestra un resultado de ejemplo:

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

También puede ejecutar este comando mediante el identificador de operación disponible en la salida anterior. El parámetro Id denota el identificador de operación por usar. Por ejemplo:

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

Aunque es importante permitir que las operaciones finalicen correctamente cuando ya no sean necesarias, hay circunstancias en las que es necesario liberar el control de los grupos de nodos y clústeres con operaciones de larga duración mediante un comando anular.

La compatibilidad de AKS para anular las operaciones de larga duración ahora está disponible con carácter general. Esta característica le permite recuperar el control y ejecutar otra operación sin interrupciones. Este diseño se admite mediante la API REST de Azure o la CLI de Azure.

La operación de anulación admite los siguientes escenarios:

  • Si una operación de larga duración está bloqueada o sospecha de que se encuentra en un estado incorrecto o con errores, la operación se puede anular siempre que sea la última operación en ejecución en el clúster administrado o el grupo de agentes.
  • Si se bloquea o se produce un error en una operación de larga duración, esa operación se puede anular.
  • Una operación que se desencadenó en error se puede anular siempre y cuando la operación no llegue primero a un estado terminal.

Antes de empezar

  • La versión 2.47.0 de la CLI de Azure, o cualquier versión posterior. Ejecute az --version para buscar la versión y ejecute az upgrade para actualizar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Anulación de una operación de larga duración

Puede usar el comando az aks nodepool con el argumento operation-abort para anular una operación en un grupo de nodos o en un clúster administrado.

En el ejemplo siguiente se finaliza una operación en un grupo de nodos de un clúster especificado.

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

En el ejemplo siguiente se finaliza una operación en un clúster especificado.

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

En la respuesta, se devuelve un código de estado HTTP de 204.

El estado de aprovisionamiento en el clúster administrado o el grupo de agentes debe cancelarse. Use la API de REST Obtener clústeres administrados u Obtener grupos de agentes para comprobar la operación. El estado de aprovisionamiento debe actualizarse a Cancelado en unos segundos después de que se acepte la solicitud de anulación. El estado de la operación del último id. de operación en ejecución en el grupo de agentes o clúster administrado, que se puede recuperar al realizar una operación GET en el clúster administrado o el grupo de agentes, debe mostrar un estado de Cancelando.

Al finalizar una operación, no se revertirá al estado anterior y se detendrá en cualquier paso de la operación en proceso. Una vez completado, el estado de aprovisionamiento del clúster mostrará el estado Cancelado. Si la operación fuera una actualización del clúster, durante una operación de cancelación se detendrá donde esté.

Pasos siguientes

Obtenga más información sobre Información de contenedores para comprender cómo le ayuda a supervisar el rendimiento y el estado del clúster de Kubernetes y las cargas de trabajo de contenedor.