Развертывание точечных виртуальных машин Azure с помощью Azure CLI

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Точечные виртуальные машины Azure позволяют применить неиспользуемую емкость наших ресурсов. Это обеспечивает значительную экономию. В любой момент времени, когда Azure требуется емкость, инфраструктура Azure вытеснет точечные Виртуальные машины Azure. Это означает, что точечные виртуальные машины Azure прекрасно подходят для рабочих нагрузок, для которых допустимы прерывания, например для заданий пакетной обработки, сред разработки или тестирования, больших вычислительных рабочих нагрузок и др.

Цены на точечные виртуальные машины Azure зависят от региона и ценовой категории. Дополнительные сведения см. на страницах с информацией о ценах на виртуальные машины Linux и Windows.

Вы можете задать максимальную цену, которую вы готовы платить за час для виртуальной машины. Максимальную цену для точечной виртуальной машины можно установить в долларах США, используя до 5 знаков после запятой. Например, значением 0.98765 является максимальная цена 0,98765 долл. США в час. Если для максимальной цены -1задано значение , виртуальная машина будет вытеснена на основе цены. Цена за виртуальную машину — это текущая цена за точечные виртуальные машины Azure или цену на стандартную виртуальную машину, которая когда-либо меньше, при условии наличия емкости и квоты. Дополнительные сведения о настройке максимальной цены см. в разделе цен на точечные виртуальные машины Azure.

Процесс создания точечной виртуальной машины Azure с помощью Azure CLI аналогичен описанному в кратком руководстве. Просто добавьте параметр --priority Spot, задайте для параметра --eviction-policyDeallocate значение (по умолчанию) или Deleteи укажите максимальную цену или -1.

Установка Azure CLI

Чтобы создать точечные виртуальные машины Azure, необходимо запустить Azure CLI 2.0.74 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI.

Затем войдите в Azure с помощью команды az login.

az login

Создание точечной виртуальной машины Azure

В этом примере показано, как развернуть точечные виртуальные машины Azure Linux, которые не вытеснили на основе цены. Политика вытеснения устанавливается таким образом, чтобы отменить выделение виртуальной машины. В результате ее можно будет перезапустить позднее. Если вы хотите удалить виртуальную машину и базовый диск при вытеснении виртуальной машины, присвойте параметру --eviction-policy значение Delete.

az group create -n mySpotGroup -l eastus
az vm create \
    --resource-group mySpotGroup \
    --name myVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --priority Spot \
    --max-price -1 \
	--eviction-policy Deallocate

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

az vm list \
   -g mySpotGroup \
   --query '[].{Name:name, MaxPrice:billingProfile.maxPrice}' \
   --output table

Имитация вытеснения

Вы можете имитировать вытеснение точечных виртуальных машин Azure с помощью REST, PowerShell или CLI, чтобы проверить, насколько хорошо приложение реагирует на внезапное вытеснение.

В большинстве случаев для автоматического тестирования приложений необходимо использовать REST API Виртуальные машины — Имитация вытеснения. Для REST Response Code: 204 означает, что имитация вытеснения прошла успешно. Смоделированные вытеснения можно объединить со службой запланированных событий, чтобы автоматизировать реакцию приложения на вытеснение виртуальной машины.

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

Быстрый тест

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

Служба "Запланированные события" включается для вашей службы, когда вы впервые запрашиваете события.

Выполните удаленный вход в виртуальную машину, а затем откройте командную строку.

В командной строке на виртуальной машине введите:

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

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

На компьютере с установленным Azure CLI (например, на локальном компьютере) имитируйте вытеснение с помощью команды az vm simulate-eviction. Замените имя группы ресурсов и имя виртуальной машины на свои собственные.

az vm simulate-eviction --resource-group mySpotRG --name mySpot

Выходные данные ответа имеют Status: Succeeded значение , если запрос был успешно выполнен.

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

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

Когда служба запланированных событий получает уведомление о вытеснения, вы получите ответ, который выглядит примерно так:

{"DocumentIncarnation":1,"Events":[{"EventId":"A123BC45-1234-5678-AB90-ABCDEF123456","EventStatus":"Scheduled","EventType":"Preempt","ResourceType":"VirtualMachine","Resources":["myspotvm"],"NotBefore":"Tue, 16 Mar 2021 00:58:46 GMT","Description":"","EventSource":"Platform"}]}

"EventType":"Preempt" и ресурс являются ресурсами виртуальной машины "Resources":["myspotvm"].

Вы также можете увидеть условие вытеснения виртуальной машины, проверив "NotBefore" : виртуальная машина не будет вытесняться раньше указанного времени, чтобы приложение корректно закрыло окно.

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

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

Запросите текущие сведения о ценах через API розничных цен Azure, чтобы получить сведения о точечных виртуальных машинах Azure. И meterNameskuName содержат .Spot

Если при выполнении возникнут ошибки, изучите статью Коды ошибок.