Использование управляемого образа для создания пользовательского пула образов

Чтобы создать пользовательский пул образов для виртуальных машин пула пакетной службы, можно создать образ Коллекции вычислений Azure на основе управляемого образа. Также поддерживается использование только управляемого образа, но только для версий API до 2019-08-01 включительно.

Предупреждение

Поддержка создания пула пакетной службы с помощью управляемого образа прекращается после 31 марта 2026 г. Перейдите к размещению пользовательских образов в коллекции вычислений Azure для создания настраиваемого пула образов в пакетной службе. Дополнительные сведения см. в руководстве по миграции.

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

Необходимые компоненты

  • Ресурс управляемого образа. Чтобы создать пул виртуальных машин с помощью пользовательского образа, необходимо иметь или создать ресурс управляемого образа в той же подписке и в том же регионе Azure, к которым принадлежит учетная запись пакетной службы. Образ должен быть создан на основе моментального снимка дисков операционной системы виртуальной машины и при необходимости ее подключенных дисков данных.

    • Используйте уникальный пользовательский образ для каждого создаваемого пула.
    • Чтобы создать пул на основе образа с помощью API пакетной службы, укажите идентификатор ресурса в формате /subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage.
    • Ресурс управляемого образа должен существовать в течение всего времени существования пула, чтобы обеспечивать возможность масштабирования. Ресурс можно удалить после удаления пула.
  • Проверка подлинности Microsoft Entra. API клиента пакетной службы должен использовать проверку подлинности Microsoft Entra. пакетная служба Azure поддержка идентификатора Microsoft Entra id задокументирована в Проверка подлинности решений пакетной службы с помощью Active Directory.

Подготовка управляемого образа

В Azure можно подготовить управляемый образ из:

  • моментальных снимков ОС и дисков данных виртуальной машины Azure;
  • обобщенной виртуальной машины Azure с управляемыми дисками;
  • обобщенного локального виртуального жесткого диска, отправленного в облако.

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

Подготовка виртуальной машины

Если вы создаете новую виртуальную машину для образа, используйте первый образ Azure Marketplace, поддерживаемый пакетной службой в качестве базового образа для управляемого образа. В качестве базового образа можно использовать только собственные образы Azure Marketplace. Полный список ссылок на образы Azure Marketplace, поддерживаемых пакетная служба Azure, см. в разделе "Список поддерживаемых образов".

Примечание.

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

Чтобы использовать сторонний образ, можно использовать коллекцию вычислений Azure. Дополнительные сведения см. в статье "Использование коллекции вычислений Azure" для создания настраиваемого пула образов.

  • Убедитесь, что виртуальная машина создается с управляемым диском. Это параметр хранилища по умолчанию при создании виртуальной машины.
  • Не устанавливайте расширения Azure, такие как расширение пользовательского скрипта, на виртуальной машине. Если образ содержит предварительно установленное расширение, Azure может столкнуться с проблемами при развертывании пула пакетной службы.
  • При использовании подключенных дисков данных необходимо подключить и отформатировать диски в виртуальной машине, чтобы использовать их.
  • Убедитесь, что предоставленный базовый образ операционной системы использует этот временный диск по умолчанию. Сейчас агент узла пакетной службы ожидает этот диск.
  • Убедитесь, что диск ОС не зашифрован.
  • После запуска виртуальной машины подключитесь к ней с помощью RDP (для Windows) или SSH (для Linux). Установите все необходимое программное обеспечение или скопируйте необходимые данные.

Создание моментального снимка виртуальной машины

Моментальный снимок — это полная копия виртуального жесткого диска, доступная только для чтения. Чтобы создать моментальный снимок дисков ОС или дисков данных виртуальной машины, можно использовать портал Azure или средства командной строки. Описание действий и параметров, используемых для создания моментального снимка, приведено в руководстве по виртуальным машинам.

Создание образа на основе одного или нескольких моментальных снимков

Чтобы создать управляемый образ на основе моментального снимка, используйте средства командной строки Azure, такие как команда az image create. Можно создать образ, указав моментальный снимок диска ОС и при необходимости один или несколько моментальных снимков дисков данных.

Создание пула на основе управляемого образа

Найдя идентификатор ресурса управляемого образа, создайте пользовательский пул образов из этого образа. Ниже показано, как создать пользовательский пул образов с помощью пакетной службы или функции управления пакетной службой.

Примечание.

Убедитесь, что удостоверение, используемое для проверки подлинности Microsoft Entra, имеет разрешения на ресурс образа. Дополнительные сведения см. в статье Аутентификация решений пакетной службы с помощью Active Directory.

Ресурс для управляемого образа должен существовать в течение времени существования пула. При удалении базового ресурса невозможно масштабировать пул.

Пакет SDK для .NET пакетной службы

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: "batch.node.windows amd64");
}

private static ImageReference CreateImageReference()
{
    return new ImageReference(
        virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image definition name}");
}

private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
    try
    {
        CloudPool pool = batchClient.PoolOperations.CreatePool(
            poolId: PoolId,
            targetDedicatedComputeNodes: PoolNodeCount,
            virtualMachineSize: PoolVMSize,
            virtualMachineConfiguration: vmConfiguration);

        pool.Commit();
    }

REST API для управления пакетной службой

Универсальный код ресурса (URI) REST API

 PUT https://management.azure.com/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Batch/batchAccounts/{account name}/pools/{pool name}?api-version=2020-03-01

Текст запроса

 {
   "properties": {
     "vmSize": "{VM size}",
     "deploymentConfiguration": {
       "virtualMachineConfiguration": {
         "imageReference": {
           "id": "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image name}"
         },
         "nodeAgentSkuId": "{Node Agent SKU ID}"
       }
     }
   }
 }

Рекомендации по созданию крупных пулов

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

Также обратите внимание на следующие моменты.

  • Максимально допустимые размеры. Размер пула в пакетной службе ограничивается 2500 выделенных вычислительных узлов или 1000 точечных узлов, если используется пользовательский образ.

    Если вы используете один образ (или несколько образов, созданных на основе одного базового моментального снимка) для создания нескольких пулов, общее количество вычислительных узлов в пулах не может превышать указанные выше ограничения. Не рекомендуется использовать один образ или его базовый моментальный снимок для более чем одного пула.

    Максимально допустимые размеры пула могут быть меньше, если пул настраивается как пул NAT для входящего трафика.

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

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

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

Рекомендации по использованию Packer

Создание ресурса управляемого образа непосредственно с помощью Packer можно выполнять только с учетными записями Пакетной службы в режиме пользовательской подписки. Для учетных записей в режиме Пакетной службы необходимо сначала создать виртуальный жесткий диск, а затем импортировать его в ресурс управляемого образа. В зависимости от режима выделения пула (подписка пользователя или пакетная служба), действия по созданию ресурса управляемого образа зависят.

Убедитесь, что ресурс, используемый для создания управляемого образа, существует все время существования любых пулов, ссылающихся на пользовательский образ. Несоблюдение этого правила может привести к сбоям при выделении пула и (или) изменении его размера.

При удалении образа или базового ресурса может появиться сообщение об ошибке следующего вида: There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed. Если вы получите эту ошибку, убедитесь, что базовый ресурс не был удален.

Дополнительные сведения о создании виртуальной машины с помощью средства Packer см. в статье Сборка образа Linux с помощью Packer или Сборка образа Windows с помощью Packer.

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