Руководство по переносу узлов в Azure Linux

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

  • Удалите существующие пулы узлов и добавьте новые пулы узлов Azure Linux.
  • Выполните миграцию номера SKU операционной системы на месте.

Команды в этом руководстве используют переменные среды, заданные в Руководстве 1. Создание кластера с помощью Azure Linux Container Host для AKS.

Если у вас нет существующих узлов для миграции в Azure Linux, перейдите к следующему руководству. В последующих руководствах вы узнаете, как включить телеметрию и мониторинг в кластерах и обновить узлы Linux Azure.

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

  • В предыдущих руководствах вы создали и развернули контейнерный узел Azure Linux для кластера AKS. Чтобы завершить работу с этим руководством, необходимо добавить пул узлов Linux Azure в существующий кластер. Если вы не сделали этого шага и хотите продолжить, начните с руководства 2. Добавьте пул узлов Linux Azure в существующий кластер AKS.

Note

При добавлении нового пула узлов Linux Azure необходимо добавить хотя бы один как --mode System. В противном случае AKS не позволит удалить существующий пул узлов.

  • Вам нужна последняя версия Azure CLI. Чтобы узнать версию, выполните команду az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI.

Настройка переменных среды

Задайте следующие переменные среды, чтобы создать уникальные имена ресурсов для каждого развертывания. Замените заполнитель <your-node-pool-name> на имя по вашему выбору. При необходимости можно добавить случайный суффикс, чтобы обеспечить уникальность. Имя пула узлов должно начинаться с буквы в нижнем регистре и может содержать только буквенно-цифровые символы. Для пулов узлов Linux длина должна составлять от одного до 12 символов.

# Set random suffix for uniqueness
export RANDOM_SUFFIX=$(openssl rand -hex 3)

# Set node pool name
export NODE_POOL_NAME="<your-node-pool-name>$RANDOM_SUFFIX"

Добавление пулов узлов Linux и удаление существующих пулов узлов

  1. Добавьте новый пул узлов Linux Azure с помощью az aks nodepool add команды. Эта команда добавляет новый пул узлов в кластер с флагом --mode System , что делает его системным пулом узлов. Пулы системных узлов необходимы для кластеров Linux Azure.

    az aks nodepool add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --mode System --os-sku AzureLinux
    

    Пример выходных данных:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool",
      "name": "systempool",
      "provisioningState": "Succeeded"
    }
    
  2. Удалите существующие узлы с помощью az aks nodepool delete команды.

Миграция SKU ОС на месте

Вы можете перевести существующие пулы узлов Ubuntu на Azure Linux, изменив SKU ОС пула узлов, что приведёт к обновлению кластера в рамках стандартного процесса обновления образов узлов. Эта новая функция не требует создания пулов узлов.

Ограничения миграции SKU на месте ОС

Существует несколько настроек, которые могут блокировать запрос на миграцию SKU операционной системы. Чтобы обеспечить успешную миграцию, ознакомьтесь со следующими рекомендациями и ограничениями:

  • Функция миграции SKU ОС недоступна через PowerShell или портал Azure.
  • Функция миграции SKU ОС не может переименовать существующие пулы узлов.
  • Ubuntu, Azure Linux и Azure Linux с OS Guard являются единственными поддерживаемыми целевыми объектами миграции SKU ОС Linux.
  • Доверенный запуск по умолчанию требуется для Azure Linux с OS Guard. Необходимо включить доверенный запуск, чтобы иметь возможность миграции в Azure Linux с OS Guard. Так как вы не можете включить доверенный запуск в существующих пулах узлов, необходимо создать новый пул узлов с включенным доверенным запуском и перенести рабочие нагрузки в этот пул узлов.
  • Клиенты, использующие только размеры виртуальной машины 1-го поколения, не могут перенестися в Azure Linux с OS Guard, так как образ 1-го поколения не поддерживается. В этом случае необходимо создать пулы узлов с размером виртуальной машины, поддерживающей 2-е поколение.
  • SKU ОС Ubuntu с UseGPUDedicatedVHD поддержкой не может выполнить миграцию SKU ОС.
  • SKU ОС Ubuntu с активированной поддержкой CVM 20.04 не может выполнить миграцию SKU ОС.
  • Пулы узлов с поддержкой Kata не могут выполнить миграцию SKU ОС.
  • Миграция SKU ОС Windows не поддерживается.

Предварительные требования для миграции SKU на месте ОС

  • Существующий кластер AKS с по крайней мере одним пулом узлов Ubuntu.
  • Рекомендуем убедиться, что ваши рабочие нагрузки успешно настроены и запускаются на узле контейнера Linux Azure, прежде чем вы попробуете использовать функцию миграции SKU ОС, предварительно развернув кластер Linux Azure в средах разработки/продакшн и убедившись, что ваша служба остается в рабочем состоянии.
  • Убедитесь, что функция миграции работает для вас в тестовой или dev среде перед тем как использовать процесс в рабочем кластере.
  • Убедитесь, что для ваших подов задан достаточный Pod Disruption Budget (PDB), чтобы AKS могла перемещать поды между виртуальными машинами в процессе обновления.
  • Вам потребуется Azure CLI версии 2.61.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI.
  • Если вы используете Terraform, необходимо иметь версию 3.111.0 или больше модуля Terraform AzureRM.

Переместите SKU операционной системы пула узлов Ubuntu

Перейдите SKU операционной системы пула узлов на Azure Linux с помощью команды az aks nodepool update. Эта команда обновляет номер SKU ОС для пула узлов из Ubuntu в Azure Linux. Изменение SKU ОС запускает операцию немедленного обновления, которая занимает несколько минут.

az aks nodepool update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --os-sku AzureLinux

Пример выходных данных:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureLinux",
  "provisioningState": "Succeeded"
}

Note

При возникновении проблем во время миграции SKU ОС можно вернуться к предыдущему SKU ОС.

Проверьте миграцию SKU ОС

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

  • Если целевой объект миграции — Azure Linux, выполните kubectl get nodes -o wide команду. В выводе должно отображаться Microsoft Azure Linux 3.0 как образ ОС и .azl3 в конце версии ядра.
  • kubectl get pods -o wide -A Выполните команду, чтобы убедиться, что все модули pod и наборы управляющей программы выполняются в новом пуле узлов.
  • Выполните команду kubectl get nodes --show-labels, чтобы убедиться, что все метки узлов в обновленном пуле узлов соответствуют вашим ожиданиям.

Tip

Перед переносом рабочих кластеров рекомендуется отслеживать работоспособность службы в течение нескольких недель.

Запустите миграцию SKU ОС на ваших рабочих кластерах

  1. Обновите существующие шаблоны, чтобы задать OSSKU=AzureLinux. Убедитесь, что apiVersion установлено на 2023-07-01 или более позднюю версию.

    • Шаблоны ARM: используйте "OSSKU": "AzureLinux" в agentPoolProfile разделе.
    • Bicep: используйте osSku: "AzureLinux" в разделе agentPoolProfile.
    • Terraform: используйте os_sku = "AzureLinux" в default_node_pool разделе.
  2. Повторно разверните шаблон ARM, Bicep или Terraform для кластера, чтобы применить новый OSSKU параметр. В ходе этого развертывания кластер ведет себя так, как будто происходит обновление образа узла. Ваш кластер увеличивает емкость, а затем перезагружает существующие узлы один за другим в последнюю версию образа AKS с вашего нового SKU операционной системы.

Откат к предыдущей версии SKU вашей ОС

При возникновении проблем во время миграции SKU ОС можно выполнить откат к предыдущему номеру SKU ОС. Для этого необходимо изменить поле SKU ОС в шаблоне и повторно отправить развертывание, которое активирует другую операцию обновления и восстанавливает пул узлов до предыдущего номера SKU ОС.

Вы можете выполнить откат к предыдущему SKU ОС с помощью команды az aks nodepool update. Эта команда обновляет номер SKU ОС для пула узлов из Azure Linux обратно в Ubuntu.

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

В этом руководстве вы перенесли существующие узлы на Azure Linux, удалив существующие пулы узлов и добавив новые пулы узлов Azure Linux или выполнив миграцию SKU операционной системы на месте.

В следующем руководстве описано, как включить телеметрию для мониторинга кластеров.