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


Управление ресурсами пакетной обработки с помощью командлетов PowerShell

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

Для получения полного списка командлетов Azure Batch и подробного синтаксиса командлетов, см. справочник по командлетам Azure Batch.

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

Предпосылки

  • Установите и настройте модуль Azure PowerShell. Чтобы установить конкретный модуль Azure Batch, например, модуль предварительной версии, обратитесь к Галерее PowerShell.

  • Выполните командлет Connect-AzAccount, чтобы подключиться к подписке (командлеты пакетной службы Azure входят в модуль Azure Resource Manager).

    Connect-AzAccount
    
  • Зарегистрируйтесь в пространстве имен поставщика Batch. Эту операцию необходимо выполнить только один раз на одну подписку.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Управление пакетными учетными записями и ключами

Создать учетную запись Batch

New-AzBatchAccount создает Batch учетную запись в указанной группе ресурсов. Если у вас еще нет группы ресурсов, создайте ее, выполнив командлет New-AzResourceGroup . Укажите один из регионов Azure в параметре Location , например "Центральная часть США". Рассмотрим пример.

New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"

Затем создайте учетную запись Batch в группе ресурсов. Укажите имя учетной записи в <account_name>, а также расположение и имя группы ресурсов. Создание учетной записи Batch может занять некоторое время. Рассмотрим пример.

New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>

Примечание.

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

Получение ключей доступа к учетной записи

Get-AzBatchAccountKeys показывает ключи доступа, связанные с учетной записью пакетной службы Azure. Например, выполните следующую команду, чтобы получить первичные и вторичные ключи созданной учетной записи.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Создание нового ключа доступа

New-AzBatchAccountKey создает новый первичный или вторичный ключ учетной записи для учетной записи пакетной службы Azure. Например, чтобы создать новый первичный ключ для учетной записи Batch, введите:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Примечание.

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

Удалить пакетную учетную запись

Remove-AzBatchAccount удаляет учетную запись Batch. Рассмотрим пример.

Remove-AzBatchAccount -AccountName <account_name>

При появлении запроса подтвердите удаление учетной записи. Удаление учетной записи может занять некоторое время.

Создание объекта BatchAccountContext

Вы можете пройти аутентификацию для управления ресурсами Batch с использованием либо проверки подлинности общего ключа, либо Microsoft Entra. Чтобы выполнить проверку подлинности с помощью командлетов Batch PowerShell, сначала создайте объект BatchAccountContext для хранения учетных данных учетной записи или удостоверения. Объект BatchAccountContext передается в командлеты, использующие параметр BatchContext.

Проверка подлинности с общим ключом

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Примечание.

По умолчанию первичный ключ учетной записи используется для проверки подлинности, но вы можете явно выбрать ключ для использования, изменив свойство KeyInUse объекта BatchAccountContext: $context.KeyInUse = "Secondary"

Аутентификация Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Создавайте и изменяйте пакетные ресурсы

Используйте командлеты, такие как New-AzBatchPool, New-AzBatchJob и New-AzBatchTask, для создания ресурсов в учетной записи Batch. Существуют соответствующие командлеты Get- и Set- для обновления свойств существующих ресурсов, а также командлеты Remove- для удаления ресурсов в учетной записи пакетной службы.

При использовании многих этих командлетов помимо передачи объекта BatchContext необходимо создать или передать объекты, содержащие подробные параметры ресурсов, как показано в следующем примере. Подробная справка по каждому командлету содержит дополнительные примеры.

Создайте пул заданий.

При создании или обновлении пула Batch необходимо указать конфигурацию. Как правило, пулы должны быть настроены с помощью конфигурации виртуальной машины, которая позволяет указать один из поддерживаемых образов виртуальных машин Linux или Windows, перечисленных в Marketplace виртуальных машин Azure, или предоставить готовый образ. Пулы конфигурации облачных сервисов предоставляют только вычислительные узлы Windows и не поддерживают все возможности службы Batch.

При запуске New-AzBatchPool передайте параметры операционной системы в объекте PSVirtualMachineConfiguration или PSCloudServiceConfiguration. Например, в следующем фрагменте кода создается Batch-пул с вычислительными узлами размера Standard_A1 в конфигурации виртуальной машины с образом Ubuntu Server 20.04-LTS. Здесь параметр VirtualMachineConfiguration указывает переменную $configuration в качестве объекта PSVirtualMachineConfiguration. Параметр BatchContext указывает ранее определенную переменную $context в качестве объекта BatchAccountContext.

$imageRef = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("UbuntuServer","Canonical","20.04-LTS")

$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageRef, "batch.node.ubuntu 20.04")

New-AzBatchPool -Id "mypspool" -VirtualMachineSize "Standard_a1" -VirtualMachineConfiguration $configuration -AutoScaleFormula '$TargetDedicated=4;' -BatchContext $context

Целевое число вычислительных узлов в новом пуле вычисляется формулой автомасштабирования. В этом случае формула просто $TargetDedicated=4, что указывает, что максимальное число вычислительных узлов в пуле равно 4.

Запрос пулов, заданий, задач и других подробностей

Используйте командлеты, такие как Get-AzBatchPool, Get-AzBatchJob и Get-AzBatchTask, для запроса сущностей, созданных в учетной записи Batch.

Запрос данных

Например, используйте Get-AzBatchPools для поиска пулов . По умолчанию этот запрос предназначен для всех пулов вашей учетной записи, если вы уже сохранили объект BatchAccountContext в $context:

Get-AzBatchPool -BatchContext $context

Использование фильтра OData

Фильтр OData можно указать с помощью параметра Filter , чтобы найти только интересующие вас объекты. Например, можно найти все пулы с идентификаторами, начиная с myPool:

$filter = "startswith(id,'myPool')"

Get-AzBatchPool -Filter $filter -BatchContext $context

Этот метод не так гибкий, как использование where-Object в локальном конвейере. Однако запрос отправляется в пакетную службу напрямую, чтобы все фильтрация происходило на стороне сервера, сохраняя пропускную способность Интернета.

Использование параметра id

Альтернативой фильтру OData является использование параметра Id . Чтобы запросить определенный пул с идентификатором myPool:

Get-AzBatchPool -Id "myPool" -BatchContext $context

Параметр Id поддерживает только полный поиск идентификаторов; не подстановочные знаки или фильтры в стиле OData.

Использование параметра MaxCount

По умолчанию каждый командлет возвращает не более 1000 объектов. Если вы достигнете этого ограничения, измените фильтр, чтобы вернуть меньше объектов или явно задать максимальное значение с помощью параметра MaxCount . Рассмотрим пример.

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Чтобы удалить верхнюю границу, установите maxCount значение 0 или меньше.

Использование конвейера PowerShell

Командлеты пакетной обработки используют конвейер PowerShell для отправки данных между командлетами. Это имеет тот же эффект, что и указание параметра, но упрощает работу с несколькими сущностями.

Например, найдите и отобразите все задачи в вашей учетной записи:

Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context

Перезапустите (перезагрузите) каждый вычислительный узел в пуле:

Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Управление пакетами приложений

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

Это важно

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

Создайте приложение:

New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Добавьте пакет приложения:

New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip

Задайте версию по умолчанию для приложения:

Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"

Список пакетов приложения

$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

$application.ApplicationPackages

Удаление пакета приложения

Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"

Удаление приложения

Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Примечание.

Перед удалением приложения необходимо удалить все версии пакета приложения. При попытке удалить приложение, которое в настоящее время содержит пакеты приложений, появится ошибка "Конфликт".

Развертывание пакета приложения

При создании пула можно указать один или несколько пакетов приложений для развертывания. При указании пакета во время создания пула он развертывается на каждом узле по мере его присоединения к пулу. Пакеты также развертываются при перезагрузке или повторном использовании узла.

Укажите параметр -ApplicationPackageReference при создании пула, чтобы развернуть пакет приложения на узлах пула по мере их присоединения к пулу. Сначала создайте объект PSApplicationPackageReference и настройте его с идентификатором приложения и версией пакета, которую необходимо развернуть на вычислительных узлах пула:

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Теперь создайте пул и укажите объект ссылки на пакет в качестве аргумента для ApplicationPackageReferences параметра:

New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Дополнительные сведения о пакетах приложений можно найти в разделе "Развертывание приложений на вычислительных узлах с пакетами приложений Batch".

Обновление пакетов приложений пула

Чтобы обновить приложения, назначенные существующему пулу, сначала создайте объект PSApplicationPackageReference с требуемыми свойствами (идентификатор приложения и версия пакета):

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

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

$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

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

Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Подсказка

Вы можете развернуть несколько пакетов приложений на вычислительных узлах в пулах. Если вы хотите добавить пакет приложения вместо замены развернутых в настоящее время пакетов, опустите $pool.ApplicationPackageReferences.Clear() указанную выше строку.

Дальнейшие действия