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


Руководство. Обновление кластера Служба Azure Kubernetes (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.

Получение доступных версий кластера

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

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

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

      {
        "agentPoolProfiles": null,
        "controlPlaneProfile": {
          "kubernetesVersion": "1.28.9",
          ...
          "upgrades": [
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.4"
            },
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.2"
            }
          ]
        },
        ...
      }
    

Обновление кластера AKS

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

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

Примечание.

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

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

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

Обновление кластера вручную

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

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    
  • Вам будет предложено подтвердить операцию обновления и подтвердить, что вы хотите обновить плоскость управления и все пулы узлов до выбранной версии Kubernetes:

     Are you sure you want to perform this operation? (y/N): y
    Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
    

    Примечание.

    Одновременно можно выполнить только одно обновление дополнительного номера версии. Например, можно выполнить обновление с версии 1.14.x до версии 1.15.x, но не удается выполнить обновление с версии 1.14.x до версии 1.16.x напрямую. Чтобы выполнить обновление с версии 1.14.x до версии 1.16.x, необходимо сначала выполнить обновление с версии 1.14.x до 1.15.x, а затем выполнить другое обновление с версии 1.15.x до 1.16.x.

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

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

Настройка автоматического обновления кластера

  • Задайте канал автоматического обновления в кластере az aks update с помощью команды с заданным параметром --auto-upgrade-channel patch.

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

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

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

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

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

Примечание.

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

  • Всплеск: создание узла всплеска.
  • Очистка: вытеснение модулей pod с узла. Каждый модуль pod имеет пять минут времени ожидания для завершения вытеснения.
  • Обновление: обновление узла выполнено успешно или завершилось сбоем.
  • Удаление: удаление узла всплеска.
  • Просмотр событий обновления в пространствах имен по умолчанию с помощью kubectl get events команды.

    kubectl get events --field-selector source=upgrader
    

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

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

Проверка обновления

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

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

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

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.29.2               1.29.2                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Удаление кластера

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

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

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

Примечание.

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

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

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

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

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