Поделиться через


Завершение длительной операции в кластере Службы Azure Kubernetes (AKS)

Иногда развертывание или другие процессы, выполняемые в модулях pod на узлах в кластере, могут выполняться в течение нескольких периодов времени дольше, чем ожидалось из-за различных причин. Вы можете получить представление о ходе выполнения любой текущей операции, например создании, обновлении и масштабировании, с помощью любой предварительной версии API после 2024-01-02-preview использования следующей команды 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"

Эта команда предоставляет процент, указывающий, как закрыть операцию до завершения. Этот метод можно использовать для получения этих аналитических сведений до 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>"

Хотя важно разрешить операции корректно завершаться, если они больше не нужны, существуют обстоятельства, в которых необходимо освободить управление пулами узлов и кластерами с длительными операциями с помощью команды прерывания.

Поддержка AKS для прерывания длительных операций теперь общедоступна. Эта функция позволяет легко выполнять еще одну операцию и выполнять другую операцию. Эта конструкция поддерживается с помощью REST API Azure или Azure CLI.

Операция прерывания поддерживает следующие сценарии:

  • Если длительная операция зависает или есть подозрение, что она находится в плохом состоянии или завершиться сбоем, ее можно прервать, если это последняя выполняющаяся операция в управляемом кластере или пуле агентов.
  • Если длительная операция зависает или завершается сбоем, ее можно прервать.
  • Операцию, которая была вызвана ошибкой, можно прервать до достижения финального состояния.

Подготовка к работе

  • Azure CLI версии 2.47.0 или более поздней. Запустите az --version, чтобы определить версию и запустите az upgrade для обновления версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Прерывание длительных операций

Команду 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.

Состояние подготовки в управляемом кластере или пуле агентов должно быть Canceled. Используйте REST API получения управляемых кластеров или получения пулов агентов для проверки операции. Состояние подготовки должно обновиться до Canceled в течение нескольких секунд после принятия запроса на прерывание. Состояние последней запущенной операции в управляемом пуле кластеров или агентов, которое можно получить, выполнив операцию GET в управляемом кластере или пуле агентов, должно отображать состояние отмены.

При завершении операции он не откатывается к предыдущему состоянию и останавливается на любом шаге операции в процессе. После завершения подготовки кластера отображается состояние "Отменено ". Если операция будет обновлением кластера, во время операции отмены она останавливается, где она находится.

Следующие шаги

Узнайте больше о аналитике контейнеров, чтобы понять, как она помогает отслеживать производительность и работоспособность кластера Kubernetes и рабочих нагрузок контейнеров.