Завершение длительной операции в кластере Службы 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 и рабочих нагрузок контейнеров.
Azure Kubernetes Service