Перенесите существующие узлы на Azure Container Linux (ACL) для Azure Kubernetes Service (AKS)

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

  • Миграция SKU ОС на месте: измените SKU ОС существующих пулов узлов на ACL; при этом узлы будут автоматически переустановлены с новым образом.
  • Удалите существующие пулы узлов и добавьте новые пулы узлов ACL: создайте новые пулы узлов ACL, переместите рабочие нагрузки и удалите старые пулы узлов.

Important

Если вы используете Azure Container Linux (ACL) в AKS, ознакомьтесь со следующими рекомендациями и ограничениями:

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

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

  • Функция миграции SKU ОС недоступна через PowerShell или портал Azure.
  • Функция миграции SKU ОС не поддерживает переименование существующих пулов узлов.
  • Пулы узлов с UseGPUDedicatedVHD включенным параметром не могут выполнить миграцию SKU ОС.
  • Миграция SKU ОС Windows не поддерживается.

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

  • Существующий кластер AKS с по крайней мере одним пулом узлов Linux.
  • Azure CLI версии 2.86.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI.
  • Мы рекомендуем проверить, что рабочие нагрузки успешно выполняются в ACL, развернув кластер ACL в среде разработки или тестовой среде перед переносом производственных кластеров.
  • Убедитесь, что функция миграции работает для вас в тестовой или dev среде перед тем как использовать процесс в рабочем кластере.
  • Убедитесь, что у ваших модулей pod достаточно бюджета сбоя pod (PDB), чтобы akS могли перемещать модули pod между виртуальными машинами во время миграции.

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

  1. Добавьте новый пул узлов ACL с помощью az aks nodepool add команды. Используйте --mode System, чтобы новый пул мог выступать в качестве системного пула агентов, что позволит удалить исходный пул узлов на следующем шаге.

    az aks nodepool add \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <new-node-pool-name> \
        --os-sku AzureContainerLinux \
        --mode System \
        --node-count 3
    

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

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

    az aks nodepool delete \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <existing-node-pool-name>
    

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

Вы можете перевести существующие пулы узлов Linux на ACL, изменив SKU операционной системы для пула узлов, при этом кластер пройдет стандартный процесс поэтапного обновления образов узлов. Этот метод не требует создания новых пулов узлов; вместо этого существующие пулы узлов автоматически повторно создаются из образа.

Миграция SKU операционной системы на локальном уровне

Important

Для ACL требуется доверенный запуск. Необходимо указать --enable-secure-boot и --enable-vtpm при переходе на SKU ОС AzureContainerLinux. Размер виртуальной машины пула узлов также должен поддерживать доверенный запуск. Если текущий размер виртуальной машины не поддерживает его, необходимо изменить размер или повторно создать пул узлов с поддерживаемым размером виртуальной машины перед переносом.

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

az aks nodepool update \
    --resource-group <resource-group> \
    --cluster-name <cluster-name> \
    --name <existing-node-pool-name> \
    --os-sku AzureContainerLinux \
    --enable-secure-boot \
    --enable-vtpm

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

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

Note

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

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

Tip

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

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

  1. Убедитесь, что новые узлы выполняют ACL с помощью kubectl get nodes -o wide команды. Выходные данные должны отображать образ ОС ACL.

    kubectl get nodes -o wide
    
  2. Проверьте, что все ваши поды и объекты DaemonSet запущены в новом пуле узлов с помощью команды kubectl get pods -o wide -A.

    kubectl get pods -o wide -A
    
  3. Убедитесь, что все метки узлов в обновленном пуле узлов соответствуют ожидаемым, с помощью команды kubectl get nodes --show-labels.

    kubectl get nodes --show-labels
    
  4. Проверьте версию образа узла с помощью az aks nodepool list команды.

    az aks nodepool list \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'
    

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

    [
      {
        "name": "myNodePool",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

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

При возникновении проблем во время миграции SKU ОС можно выполнить откат к предыдущему номеру SKU ОС. Для этого измените поле SKU ОС обратно на предыдущее значение и повторно отправьте развертывание, что запустит ещё одну операцию обновления и переустановит образ в пуле узлов с предыдущим значением SKU ОС. При откате с ACL на предыдущий SKU ОС пул узлов по умолчанию использует вариант образа Trusted Launch (Gen2), если только Trusted Launch не отключён явно.

Выполните откат к предыдущей версии SKU вашей операционной системы с помощью команды az aks nodepool update. В этом примере выполняется откат из ACL в Azure Linux:

az aks nodepool update \
    --resource-group <resource-group> \
    --cluster-name <cluster-name> \
    --name <existing-node-pool-name> \
    --os-sku AzureLinux

Дополнительные сведения об ACL см. в статье Что такое Azure Container Linux (ACL) для Azure Kubernetes Service (AKS)?