Distribuire Azure Spot Virtual Machines usando l'interfaccia della riga di comando di Azure

Si applica a: ✔️ macchine virtuali Linux ✔️ set di scalabilità flessibili

L'uso delle Azure Spot Virtual Machines consente di sfruttare la capacità inutilizzata con un notevole risparmio sui costi. In qualsiasi momento in cui Azure richiede di nuovo la capacità, l'infrastruttura di Azure rimuove le Azure Spot Virtual Machines. Le macchine virtuali di Azure Spot Virtual Machines sono pertanto ideali per i carichi di lavoro in grado di gestire le interruzioni, come i processi di elaborazione batch, gli ambienti di sviluppo/test, i carichi di lavoro di calcolo di grandi dimensioni e altro ancora.

I prezzi per Azure Spot Virtual Machines sono variabili, in base all'area e all'SKU. Per altre informazioni, vedere i prezzi delle macchine virtuali per Linux e Windows.

È possibile impostare un prezzo massimo che si vuole pagare, all'ora, per la macchina virtuale. Il prezzo massimo per una macchina virtuale spot di Azure può essere impostato in dollari statunitensi (USD), usando fino a 5 cifre decimali. Ad esempio, il valore 0.98765 è un prezzo massimo di $ 0,98765 USD all'ora. Se si imposta il prezzo massimo da -1, la macchina virtuale viene rimossa in base al prezzo. Il prezzo per la macchina virtuale è il prezzo corrente per la macchina virtuale spot di Azure o il prezzo per una macchina virtuale standard, in base al valore minore, purché siano disponibili capacità e quota. Per altre informazioni sull'impostazione del prezzo massimo, vedere Azure Spot Virtual Machines - Prezzi.

Il processo di creazione di una macchina virtuale spot di Azure con l'interfaccia della riga di comando di Azure è identico a quello descritto nell'articolo di avvio rapido. È sufficiente aggiungere il parametro "-priority Spot", impostare --eviction-policy su Deallocate (impostazione predefinita) o Delete e fornire un prezzo massimo o -1.

Installazione dell'interfaccia della riga di comando di Azure

Per creare Azure Spot Virtual Machines, è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.74 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Accedere ad Azure tramite az login.

az login

Creare una Azure Spot Virtual Machine

Questo esempio illustra come distribuire una macchina virtuale spot Linux di Azure che non viene rimossa in base al prezzo. Il criterio di rimozione è impostato per deallocare la macchina virtuale, in modo che possa essere riavviata in un secondo momento. Se si vuole eliminare la macchina virtuale e il disco sottostante quando la macchina virtuale viene rimossa, impostare --eviction-policy su 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

Dopo aver creato la macchina virtuale, è possibile eseguire una query per visualizzare il prezzo di fatturazione massimo per tutte le macchine virtuali nel gruppo di risorse.

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

Simulare un'operazione di rimozione

È possibile simulare una rimozione di una macchina virtuale spot di Azure usando REST, PowerShell o l'interfaccia della riga di comando per testare la risposta dell'applicazione a una rimozione improvvisa.

Nella maggior parte dei casi, si vuole usare Macchine virtuali - Simulare rimozione dell'API REST per facilitare il test automatizzato delle applicazioni. Per REST, un Response Code: 204 indica che la rimozione simulata ha avuto esito positivo. È possibile combinare le eliminazioni simulate con il servizio Evento pianificato, per automatizzare la risposta dell'app quando la macchina virtuale viene rimossa.

Per visualizzare gli eventi pianificati in azione, guardare Azure Friday - Uso di Eventi pianificati di Azure per prepararsi alla manutenzione delle macchine virtuali.

Test rapido

Per un test rapido per illustrare il funzionamento di una rimozione simulata, è possibile eseguire una query sul servizio evento pianificato per verificare l'aspetto di una rimozione usando l'interfaccia della riga di comando di Azure.

Il servizio Eventi pianificati viene abilitato la prima volta che si effettua una richiesta di eventi.

Connettersi da remoto alla macchina virtuale e aprire un prompt dei comandi.

Nella finestra del prompt dei comandi digitare:

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

Questa prima risposta potrebbe richiedere fino a 2 minuti. Da ora in poi, si dovrebbe visualizzare l'output quasi immediatamente.

Da un computer in cui è installata l'interfaccia della riga di comando di Azure (ad esempio il computer locale), simulare una rimozione usando az vm simulate-eviction. Sostituire il nome del gruppo di risorse e della macchina virtuale con il proprio.

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

L'output della risposta ha Status: Succeeded se la richiesta è stata effettuata correttamente.

Tornare rapidamente alla connessione remota alla macchina virtuale spot ed eseguire di nuovo una query sull'endpoint Eventi pianificati. Ripetere il comando seguente fino a ottenere un output contenente altre informazioni:

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

Quando il servizio eventi pianificato riceve la notifica di rimozione, si ottiene una risposta simile all'output seguente:

{"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"}]}

È possibile notare "EventType":"Preempt" e che la risorsa è la risorsa della macchina virtuale "Resources":["myspotvm"].

È anche possibile visualizzare la condizione di rimozione della macchina virtuale controllando "NotBefore": la macchina virtuale non verrà rimossa prima del tempo specificato, in modo che la finestra dell'applicazione si chiuda normalmente.

Passaggi successivi

È anche possibile creare una macchina virtuale spot di Azure usando Azure PowerShell, il portale o un modello.

Eseguire query sulle informazioni sui prezzi correnti usando l'API Prezzi al dettaglio di Azure per informazioni sulla macchina virtuale spot di Azure. meterName e skuName contengono entrambi Spot.

Se si verifica un errore, vedere Codici di errore.