Бөлісу құралы:


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

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

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

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

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

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

Установите Azure CLI

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

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

az login

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

В этом примере показано, как развернуть виртуальную машину Linux Azure Spot Virtual Machine, которая не вытесна на основе цены. Политика вытеснения устанавливается таким образом, чтобы освободить виртуальную машину, в результате чего ее можно будет перезапустить позже. Если вы хотите удалить виртуальную машину и базовый диск при вытеснении виртуальной машины, присвойте параметру --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 или ИНТЕРФЕЙСА командной строки, чтобы проверить, насколько хорошо приложение реагирует на внезапное вытеснение.

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

Чтобы увидеть запланированные события в действии, посмотрите Azure Friday. Использование запланированных событий 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. И то, и другое meterName skuName содержит Spot.

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