Настройка политики прерывания узлов в Azure Kubernetes Service (AKS) (предварительная версия)

В этой статье показано, как настраивать политику нарушения работы узлов и управлять ею, чтобы определять, когда в кластере Azure Kubernetes Service (AKS) разрешены операции, требующие переустановки образа узла и инициирующие повторное развертывание узлов.

Необходимые условия

Important

Предварительные версии функций AKS доступны на условиях самообслуживания и по выбору пользователя. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:

Установите расширение aks-preview Azure CLI

  1. aks-preview Установите расширение с помощью az extension add команды.

    az extension add --name aks-preview
    
  2. Обновите до последней версии расширения с помощью az extension update команды.

    az extension update --name aks-preview
    

Зарегистрировать функцию предварительной версии политики прерывания узла

Зарегистрируйте предварительную функцию Node Disruption Policy с помощью команды az feature register.

az feature register --namespace "Microsoft. ContainerService" --name "NodeDisruptionProfile"

В течение нескольких минут состояние отображается как зарегистрированное.

Настройка политики прерывания узлов в новом кластере

Создайте новый кластер AKS с политикой прерывания узла, настроенной с помощью az aks create команды с --node-disruption-policy параметром, заданным для одной из следующих конфигураций политик: Allow (по умолчанию) AllowDuringMaintenanceWindowили Block.

Разрешить разрушительные операции в любое время (по умолчанию)

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Allow \
    --generate-ssh-keys

Разрешить разрушительные операции только во время периодов обслуживания

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy AllowDuringMaintenanceWindow \
    --generate-ssh-keys

Important

При использовании AllowDuringMaintenanceWindow обязательно настройте окно обслуживания aksManagedNodeOSUpgradeSchedule. Конфигурация обслуживания может задать расписание прямо в конфигурации или ссылаться на общее окно обслуживания. В противном случае операции, нарушающие работу, разрешены на неограниченный срок. Дополнительные сведения см. в статье "Использование планового обслуживания для планирования и управления обновлениями для кластера Служба Azure Kubernetes".

Блокировать все разрушительные операции

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Block \
    --generate-ssh-keys

Обновить политику сбоев узлов в существующем кластере

Обновите политику прерывания узла в существующем кластере AKS с помощью az aks update команды с --node-disruption-policy параметром, заданным для одной из следующих конфигураций политик: Allow (по умолчанию) AllowDuringMaintenanceWindowили Block.

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

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy AllowDuringMaintenanceWindow

Изменение политики для блокировки всех разрушительных операций

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Block

Снова измените политику, чтобы разрешить выполнение операций в любое время

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Allow

Проверьте конфигурацию политики прерывания работы узла

Проверьте конфигурацию политики прерывания узла с помощью az aks show команды.

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
    --output tsv

Выходные данные показывают текущий параметр политики, например Allow, AllowDuringMaintenanceWindowили Block.

Обработка заблокированных операций

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

Дождитесь периода обслуживания

Если вы используете AllowDuringMaintenanceWindow, запланируйте операцию во время следующего периода обслуживания. Вы можете просмотреть настроенные окна обслуживания с помощью команды az aks maintenanceconfiguration list.

az aks maintenanceconfiguration list \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster

Временно изменить политику

  1. Обновите политику до Allow с помощью команды az aks update, задав для --node-disruption-policy значение Allow.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Allow
    
  2. Выполните операцию с прерыванием работы. В следующем примере показано, как обновить пользовательские сертификаты CA с помощью команды az aks update:

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates <path-to-certificate-file>
    
  3. Восстановите исходную политику с помощью az aks update команды. В следующем примере показано, как восстановить --node-disruption-policy до Block:

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Block
    

Операции, требующие обновления пула узлов вручную в Kubernetes 1.36 и более ранних версиях

В Kubernetes 1.37 и более поздних версиях политика прерывания узлов охватывает следующие изменения конфигурации. В Kubernetes 1.36 и более ранних версиях эти изменения требуют обновления пула узлов вручную:

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

В Kubernetes 1.36 и более ранних версий выполните az aks nodepool upgrade команду вручную после изменения конфигурации. Рассмотрим пример.

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name <nodepool-name> \
    --node-image-only

Дополнительные сведения об операциях, охватываемых политикой прерывания узлов, см. в обзоре политики прерывания узла.

Устранение неполадок, связанных с политикой прерывания узлов

Непредвиденная операция заблокирована

Если операция заблокирована неожиданно, выполните следующие действия, чтобы устранить проблему:

  1. Проверьте текущий параметр политики с помощью az aks show команды.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
        --output tsv
    
  2. Если вы используете AllowDuringMaintenanceWindow, проверьте конфигурацию окна обслуживания с помощью команды az aks maintenanceconfiguration show.

    az aks maintenanceconfiguration show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name aksManagedNodeOSUpgradeSchedule
    
  3. Проверьте, входит ли текущее время в период обслуживания.

Окно обслуживания не настроено

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

Настройте окно обслуживания с помощью команды az aks maintenanceconfiguration add. Чтобы повторно использовать одно и то же расписание в нескольких кластерах, свяжите aksManagedNodeOSUpgradeSchedule с общим окном обслуживания.

az aks maintenanceconfiguration add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name aksManagedNodeOSUpgradeSchedule \
    --schedule-type Weekly \
    --day-of-week Sunday \
    --interval-weeks 1 \
    --duration 4 \
    --start-time 02:00