Обновление образов узлов службы Azure Kubernetes (AKS)

Azure Kubernetes Service (AKS) регулярно предоставляет новые образы узлов, поэтому часто обновляйте образы узлов, чтобы использовать последние функции AKS. Образы узлов Linux обновляются еженедельно, а образы узлов Windows обновляются ежемесячно. Примечания к выпуску AKS включают объявления об обновлении образов. Для развертывания этих обновлений во всех регионах может потребоваться до двух недель. См. трекер выпуска, чтобы узнать статус развертывания. Вы также можете автоматически выполнять обновления образа узла и планировать их с помощью планового техобслуживания. Дополнительные сведения см. в разделе "Автоматическое обновление образов ОС узла".

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

Important

Начиная с 30 ноября 2025 г. служба Azure Kubernetes (AKS) больше не поддерживает или предоставляет обновления безопасности для Azure Linux 2.0. Образ узла Linux 2.0 Azure заморожен в выпуске202512.06.0. Начиная с 31 октября 2026 г. образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Перейдите на поддерживаемую версию Azure Linux, обновив пулы узлов до поддерживаемой версии Kubernetes или перейдя на osSku AzureLinux3. Для получения дополнительной информации см. запись GitHub об окончании поддержки и объявление о прекращении обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте релизным заметкам AKS.

Замечание

Кластеры, использующие автоматическое выделение узлов (NAP), автоматически обновляют образы узлов при появлении нового образа. Вы можете настроить окно обслуживания, чтобы управлять тем, когда NAP будет использовать новый образ, однако это окно не обязательно определяет, когда будут затронуты существующие узлы. Логика дрейфа NAP, бюджеты прерывания узлов Karpenter и бюджеты прерывания pod’ов определяют, как и когда происходят прерывания. Дополнительные сведения см. в разделе "Обновления образов узла" для NAP.

Нельзя изменить версию образа узла (например, AKSUbuntu-2404 до AKSUbuntu-2204 или AKSUbuntu-2404-2404-202601.27.0 до AKSUbuntu-2404-202601.13.0).

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

  • Существующий кластер AKS и пул узлов.
  • Azure CLI установлен и вошел в учетную запись Azure.
  • Разрешение на получение учетных данных кластера, а также на чтение и обновление кластера AKS и его пулов узлов.
  • Командная оболочка Bash. Команды в этой статье используют синтаксис переменной среды Bash.

Задайте переменные среды для группы ресурсов, кластера и пула узлов, которые будут использоваться в следующих командах:

export AKS_RESOURCE_GROUP="<resource-group-name>"
export AKS_CLUSTER="<cluster-name>"
export AKS_NODEPOOL="<node-pool-name>"

Подключение к кластеру AKS

  1. Подключитесь к вашему кластеру AKS, используя команду az aks get-credentials.

    az aks get-credentials \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER
    

Проверка наличия обновлений образов узла

  1. Проверьте наличие доступных обновлений для образа узла с помощью команды az aks nodepool get-upgrades.

    az aks nodepool get-upgrades \
        --nodepool-name $AKS_NODEPOOL \
        --cluster-name $AKS_CLUSTER \
        --resource-group $AKS_RESOURCE_GROUP
    
  2. В выходных данных найдите значение latestNodeImageVersion и запишите его. Это значение представляет собой последнюю версию образа узла, доступную для пула узлов.

  3. Проверьте текущую версию образа узла, чтобы сравнить ее с последней версией az aks nodepool show с помощью команды.

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion
    
  4. Если значение nodeImageVersion отличается от значения latestNodeImageVersion, вы можете обновить образ узла.

Обновление всех образов узлов во всех пулах узлов

  1. Обновите все образы узлов во всех пулах узлов в вашем кластере с помощью команды az aks upgrade с флагом --node-image-only.

    az aks upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER \
        --node-image-only \
        --yes
    
  2. Вы можете проверить состояние образов узлов с помощью kubectl get nodes команды.

    Замечание

    Эта команда может немного отличаться в зависимости от используемой оболочки. Дополнительные сведения о средах Windows и PowerShell см. в документации Kubernetes JSONPath. Эта команда перечисляет имя каждого узла вместе со значением своей kubernetes.azure.com/node-image-version метки, которая определяет текущую версию образа узла.

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. По завершении обновления используйте az aks show команду, чтобы получить обновленные сведения о пуле узлов. Текущий образ узла отображается в свойстве nodeImageVersion.

    az aks show \
        --resource-group $AKS_RESOURCE_GROUP \
        --name $AKS_CLUSTER  \
        --query "agentPoolProfiles[].{Name:name, NodeImageVersion:nodeImageVersion}"
    

Обновление определенного пула узлов

  1. Обновите образ ОС в пуле рабочих узлов без обновления кластера Kubernetes с помощью команды az aks nodepool upgrade и флага --node-image-only.

    az aks nodepool upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --node-image-only
    
  2. Вы можете проверить состояние образов узлов с помощью kubectl get nodes команды.

    Замечание

    Эта команда может немного отличаться в зависимости от используемой оболочки. Дополнительные сведения о средах Windows и PowerShell см. в документации Kubernetes JSONPath. Эта команда перечисляет имя каждого узла вместе со значением своей kubernetes.azure.com/node-image-version метки, которая определяет текущую версию образа узла.

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  3. По завершении обновления используйте az aks nodepool show команду, чтобы получить обновленные сведения о пуле узлов. Текущий образ узла отображается в свойстве nodeImageVersion.

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion
    

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

Эта процедура обновляет образ узла для определенного пула узлов, а не всех пулов узлов в кластере. По умолчанию AKS использует один дополнительный узел для настройки обновлений. Чтобы ускорить процесс обновления образов узлов, обновляйте образы узлов, задав настраиваемое значение параметра surge для узлов.

  1. Настройте количество узлов всплеска для пула узлов с помощью az aks nodepool update команды с флагом --max-surge . Этот параметр сохраняется для последующих обновлений.

    Замечание

    Дополнительные сведения о компромиссах для различных параметров --max-surge см. в разделе Настройка обновления со всплеском активности узлов.

    az aks nodepool update \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --max-surge 33%
    
  2. Обновите образ узла с помощью команды az aks nodepool upgrade с флагом --node-image-only.

    az aks nodepool upgrade \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --node-image-only
    
  3. Вы можете проверить состояние образов узлов с помощью kubectl get nodes команды. Эта команда перечисляет имя каждого узла вместе со значением своей kubernetes.azure.com/node-image-version метки, которая определяет текущую версию образа узла.

    kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.kubernetes\.azure\.com\/node-image-version}{"\n"}{end}'
    
  4. Узнайте обновленные сведения о пуле узлов, используя команду az aks nodepool show. Текущий образ узла отображается в свойстве nodeImageVersion.

    az aks nodepool show \
        --resource-group $AKS_RESOURCE_GROUP \
        --cluster-name $AKS_CLUSTER \
        --name $AKS_NODEPOOL \
        --query nodeImageVersion