Руководство: Обновление кластера Azure Kubernetes Service (AKS)

В рамках жизненного цикла приложения и кластера может потребоваться обновить до последней доступной версии Kubernetes. Вы можете обновить кластер службы Azure Kubernetes (AKS) с помощью Azure CLI, Azure PowerShell или в портале Azure.

В этом руководстве описано, как обновить кластер AKS. Вы узнаете, как:

  • Определите текущие и доступные версии Kubernetes.
  • Обновите узлы Kubernetes.
  • Проверка успешного обновления.

Перед началом

В предыдущих руководствах вы упаковали приложение в образ контейнера и отправьте образ контейнера в Реестр контейнеров Azure (ACR). Вы также создали кластер AKS и развернули в нем приложение. Если вы не выполнили эти действия и хотите вместе пройти урок, начните с Учебник 1 - Подготовка приложения для AKS.

При использовании Azure CLI в этом руководстве требуется Azure CLI версии 2.34.1 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

При использовании Azure PowerShell в этом руководстве требуется Azure PowerShell версии 5.9.0 или более поздней. Чтобы узнать версию, выполните команду Get-InstalledModule -Name Az. Если вам необходимо выполнить установку или обновление, см. статью об установке Azure PowerShell.

Чтобы обновить кластер AKS, вам потребуется роль участника Служба Azure Kubernetes или эквивалентные разрешения.

Перед обновлением просмотрите заметки о выпуске AKS для критических изменений и устаревших API. Кроме того, проверьте бюджеты прерываний pod рабочей нагрузки (PDB), доступную квоту вычислений и емкость IP-адресов подсети для узлов всплеска. Дополнительные сведения см. в разделе "Параметры обновления" и рекомендации для кластеров AKS.

Получение доступных версий кластера с помощью Azure CLI

Перед обновлением проверьте, какие выпуски Kubernetes доступны для кластера с помощью az aks get-upgrades команды.

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

В следующем примере выходных данных показана текущая версия кластера и перечислены более новые версии в разделе upgrades:

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Получение доступных версий кластера с помощью Azure PowerShell

  1. Перед обновлением проверьте текущую версию и регион Kubernetes кластера с помощью командлета Get-AzAksCluster .

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    В следующем примере выходных данных показана текущая версия и расположение кластера:

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. Перечислите версии Kubernetes, доступные в регионе, в котором расположен ваш кластер, с помощью командлета Get-AzAksVersion.

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    В следующем примере выходных данных показаны региональные версии в разделе OrchestratorVersion:

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    Чтобы определить потенциальные целевые объекты обновления, сравните версии, более новые, чем текущая версия кластера, с правилами обновления версий Kubernetes. Этот командлет содержит список региональной доступности и не проверяет путь обновления для определенного кластера.

Получение доступных версий кластера с помощью портала Azure

  1. Войдите на портал Azure.

  2. Перейдите к ресурсу кластера AKS.

  3. В меню службы в разделе "Параметры" выберите "Обновления".

  4. Выберите «Обновить версию» для версии Kubernetes.

    Снимок экрана: параметр

  5. На странице Обновления версии Kubernetes выберите в раскрывающемся списке версий Kubernetes, чтобы просмотреть доступные версии Kubernetes для обновления.

    Снимок экрана: экран версии обновления с доступными версиями обновления.

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

Процесс обновления кластера AKS

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

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

Примечание.

Если исправление не указано, кластер автоматически обновляется до последнего GA выпущенного исправления указанной минорной версии. Например, установка --kubernetes-version на 1.28 приводит к обновлению кластера до 1.28.9.

Для получения дополнительной информации см. Поддерживаемые обновления минорных версий Kubernetes в AKS.

Вы можете вручную обновить кластер или настроить автоматическое обновление кластера. Настройте автоматическое обновление кластера, чтобы сохранить кластер в поддерживаемой версии Kubernetes.

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

Обновите кластер с помощью az aks upgrade команды. В этом примере кластер обновляется до версии 1.34.10:

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

Примечание.

Поддерживаемые кластеры, не относящиеся к LTS, должны обновляться последовательно, переходя от одной второстепенной версии к следующей. Например, чтобы выполнить обновление с версии 1.33.x до версии 1.35.x, сначала обновите до версии 1.34.x. Кластер LTS может пропускать минорные версии при переходе к более высокой версии LTS, предлагаемой AKS, при условии, что обновление соответствует требованиям к расхождению версий и проходит проверки валидации. Дополнительные сведения см. в правилах обновления версий Kubernetes.

В следующем примере выходных данных показан результат обновления. Теперь kubernetesVersion значение соответствует версии, указанной в примере команды:

{
  ...
  "agentPoolProfiles": [
    {
      ...
      "count": 3,
      "currentOrchestratorVersion": "1.34.10",
      "maxPods": 110,
      "name": "nodepool1",
      "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202608.26.0",
      "orchestratorVersion": "1.34.10",
      "osType": "Linux",
      "upgradeSettings": {
        "drainTimeoutInMinutes": null,
        "maxSurge": "10%",
        "nodeSoakDurationInMinutes": null,
        "undrainableNodeBehavior": null
      },
      "vmSize": "Standard_DS2_v2",
      ...
    }
  ],
  ...
  "currentKubernetesVersion": "1.34.10",
  "dnsPrefix": "myAKSClust-myResourceGroup-12ab34",
  "enableRbac": false,
  "fqdn": "myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io",
  "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "kubernetesVersion": "1.34.10",
  "location": "westus2",
  "name": "myAKSCluster",
  "type": "Microsoft.ContainerService/ManagedClusters"
  ...
}

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

Обновите кластер с помощью командлета Set-AzAksCluster. В этом примере кластер обновляется до версии 1.34.10:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

Примечание.

Поддерживаемые кластеры, не относящиеся к LTS, должны обновляться последовательно от одной минорной версии к следующей. Например, чтобы выполнить обновление с версии 1.33.x до версии 1.35.x, сначала обновите до версии 1.34.x. Кластер LTS может пропускать промежуточные второстепенные версии при переходе на более новую версию LTS, доступную в AKS, если обновление соответствует требованиям к расхождению версий и проходит проверки валидации. Дополнительные сведения см. в правилах обновления версий Kubernetes.

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

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

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

  1. В портал Azure перейдите к ресурсу кластера AKS.

  2. В меню службы в разделе "Параметры" выберите "Обновления".

  3. Выберите «Обновить версию» для версии Kubernetes.

    Снимок экрана: параметр

  4. На странице Обновления версии Kubernetes выберите в раскрывающемся списке версий Kubernetes, чтобы просмотреть доступные версии Kubernetes для обновления.

    Снимок экрана: экран версии обновления с доступными версиями обновления.

  5. Выберите версию Kubernetes, которую вы хотите обновить, и нажмите кнопку "Сохранить".

Длительность обновления зависит от таких факторов, как количество узлов, параметры всплеска нагрузки, ограничения прерывания рабочей нагрузки, время ожидания очистки и продолжительность ожидания узла. Время ожидания по умолчанию составляет 30 минут на узел и может быть настроено от пяти минут до 24 часов. Длительность выдержки узла может добавлять от 0 до 30 минут на каждый узел. Дополнительные сведения см. в разделе "Настройка всплеска пула узлов и недоступных параметров".

Настройка автоматического обновления кластера с помощью Azure CLI

Настройка автоматического обновления кластера с помощью Azure PowerShell

Настройка автоматического обновления кластера с помощью портала Azure

Автоматические кластеры AKS используют stable канал, и вам не нужно настраивать канал. Для кластеров AKS Standard выберите канал в соответствии с политикой управления версиями. Каналы stable и rapid обновляют Kubernetes до следующих минорных версий и помогают поддерживать кластер в пределах поддерживаемого диапазона версий. Канал patch устанавливает только исправления для текущей второстепенной версии и не переводит кластер на более новую второстепенную версию.

В кластере AKS Standard задайте канал автообновления с помощью команды az aks update. В следующем примере используется stable канал:

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

В кластере AKS Standard задайте канал автоматического обновления с помощью командлета Set-AzAksCluster . В следующем примере используется Stable канал:

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. В портал Azure перейдите к ресурсу кластера AKS.

  2. В меню службы в разделе "Параметры" выберите "Обновления".

  3. Выберите «Обновить версию» для версии Kubernetes.

    Снимок экрана: параметр

  4. Для кластера AKS Standard на странице версии Upgrade Kubernetes выберите раскрывающийся список "Автоматическое обновление ", выберите "Включено с стабильной" и нажмите кнопку "Сохранить".

    Снимок экрана страницы

Дополнительные сведения см. в статье Автоматическое обновление кластера Служба Azure Kubernetes (AKS).

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

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

Просмотр событий обновления

Примечание.

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

  • Всплеск: создание узла всплеска.
  • Очистка: удаление модулей pod с узла. По умолчанию AKS отводит 30 минут на освобождение узла. Тайм-аут осушения можно задать в диапазоне от пяти минут до 24 часов.
  • Обновление: обновление узла прошло успешно или завершилось сбоем.
  • Удаление: удаление узла всплеска.

kubectl get Используйте команду с селектором полей для просмотра событий обновления AKS в пространстве имен по умолчанию.

kubectl get events --field-selector source=upgrader

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

LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
...
5m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
5m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Deleting node aks-nodepool1-12345678-vmss000000 from API server
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully reimaged node: aks-nodepool1-12345678-vmss000000
4m          Normal    Upgrade   node/aks-nodepool1-12345678-vmss000000   Successfully upgraded node: aks-nodepool1-12345678-vmss000000
4m          Normal    Drain     node/aks-nodepool1-12345678-vmss000000   Draining node: aks-nodepool1-12345678-vmss000000
...

Проверка обновления с помощью Azure CLI

Убедитесь, что обновление выполнено успешно с помощью az aks show команды.

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

В следующем примере выходных данных показано, что кластер AKS запускает целевую версию Kubernetes:

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Проверка обновления с помощью Azure PowerShell

Убедитесь, что обновление выполнено успешно с помощью командлета Get-AzAksCluster .

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

В следующем примере выходных данных показано, что кластер AKS запускает целевую версию Kubernetes:

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Проверка обновления с помощью портала Azure

  1. В портал Azure перейдите к ресурсу кластера AKS.
  2. На странице обзора в разделе Essentials проверьте версию Kubernetes , чтобы убедиться, что обновление выполнено успешно.

Удаление кластера с помощью Azure CLI

Удаление кластера с помощью Azure PowerShell

Удаление кластера с помощью портала Azure

Так как это руководство является последней частью серии, вы можете захотеть удалить кластер AKS, чтобы избежать расходов в Azure.

Удалите группу ресурсов, службу контейнеров и все связанные ресурсы с помощью az group delete команды.

az group delete --name myResourceGroup --yes --no-wait

Удалите группу ресурсов, службу контейнеров и все связанные ресурсы с помощью командлета Remove-AzResourceGroup .

Remove-AzResourceGroup -Name myResourceGroup
  1. В портал Azure перейдите к ресурсу кластера AKS.
  2. На странице Обзор выберите Удалить.
  3. На странице подтверждения "Удалить кластер" нажмите кнопку "Удалить".

Примечание.

При удалении кластера субъект-служба Microsoft Entra, используемая кластером AKS, не удаляется. Инструкции по удалению доверенного лица службы см. в разделе Учётные записи службы AKS: соображения и удаление. Если вы использовали управляемую идентификацию, идентификация управляется платформой и не требует настройки или смены секретов.

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

В этом руководстве вы обновили Kubernetes в кластере AKS. Вы научились выполнять следующие задачи:

  • Определите текущие и доступные версии Kubernetes.
  • Обновите узлы Kubernetes.
  • Проверка успешного обновления.

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