Azure Spot Virtual Machines implementeren met behulp van de Azure CLI
Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️
Met azure Spot Virtual Machines kunt u profiteren van onze ongebruikte capaciteit tegen aanzienlijke kostenbesparingen. Op elk moment waarop Azure de capaciteit terug nodig heeft, verwijdert de Azure-infrastructuur Virtuele Machines van Azure Spot. Azure Spot Virtual Machines zijn daarom ideaal voor workloads die onderbrekingen kunnen afhandelen, zoals batchverwerkingstaken, ontwikkel-/testomgevingen, grote rekenworkloads en meer.
Prijzen voor Azure Spot Virtual Machines zijn variabel, op basis van regio en SKU. Zie vm-prijzen voor Linux en Windows voor meer informatie.
U hebt de mogelijkheid om een maximumprijs in te stellen die u wilt betalen, per uur, voor de virtuele machine. De maximumprijs voor een virtuele Azure Spot-machine kan worden ingesteld in AMERIKAANSE dollars (USD), met maximaal 5 decimalen. De waarde 0.98765
is bijvoorbeeld een maximumprijs van $ 0,98765 USD per uur. Als u de maximale prijs -1
instelt, wordt de VM verwijderd op basis van de prijs. De prijs voor de VM is de huidige prijs voor virtuele Azure Spot-machine of de prijs voor een standaard-VM, die ooit minder is, zolang er capaciteit en quota beschikbaar zijn. Zie Azure Spot Virtual Machines - Prijzen voor meer informatie over het instellen van de maximale prijs.
Het proces voor het maken van een virtuele Azure Spot-machine met behulp van de Azure CLI is hetzelfde als in het quickstart-artikel. Voeg gewoon de parameter '--priority Spot' toe, stel de --eviction-policy
parameter in op Deallocate
(de standaardinstelling) of Delete
, en geef een maximumprijs op of -1
.
Azure-CLI installeren
Als u Azure Spot Virtual Machines wilt maken, moet u Azure CLI versie 2.0.74 of hoger uitvoeren. Voer az --version uit om de versie op te vragen. Als u uw CLI wilt installeren of upgraden, raadpleegt u De Azure CLI installeren.
Meld u aan bij Azure met az login.
az login
Een virtuele Azure Spot-machine maken
In dit voorbeeld ziet u hoe u een virtuele Linux Azure Spot-machine implementeert die niet wordt verwijderd op basis van de prijs. Het verwijderingsbeleid is ingesteld om de toewijzing van de VIRTUELE machine ongedaan te maken, zodat deze op een later tijdstip opnieuw kan worden opgestart. Als u de virtuele machine en de onderliggende schijf wilt verwijderen wanneer de virtuele machine wordt verwijderd, stelt u deze in --eviction-policy
Delete
op .
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
Nadat de virtuele machine is gemaakt, kunt u een query uitvoeren om de maximale factureringsprijs voor alle VM's in de resourcegroep weer te geven.
az vm list \
-g mySpotGroup \
--query '[].{Name:name, MaxPrice:billingProfile.maxPrice}' \
--output table
Een verwijdering simuleren
U kunt een verwijdering van een virtuele Azure Spot-machine simuleren met BEHULP van REST, PowerShell of de CLI, om te testen hoe goed uw toepassing reageert op een plotselinge verwijdering.
In de meeste gevallen wilt u de REST API Virtual Machines gebruiken - Verwijdering simuleren om te helpen bij het automatisch testen van toepassingen. Voor REST betekent dit Response Code: 204
dat de gesimuleerde verwijdering is geslaagd. U kunt gesimuleerde verwijderingen combineren met de geplande gebeurtenisservice om te automatiseren hoe uw app reageert wanneer de VIRTUELE machine wordt verwijderd.
Als u geplande gebeurtenissen in actie wilt zien, bekijkt u Azure Friday- Azure Scheduled Events gebruiken om u voor te bereiden op VM-onderhoud.
Snelle test
Voor een snelle test om te laten zien hoe een gesimuleerde verwijdering werkt, gaan we een query uitvoeren op de geplande gebeurtenisservice om te zien hoe deze eruitziet wanneer u een verwijdering simuleert met behulp van de Azure CLI.
De geplande gebeurtenisservice is ingeschakeld voor uw service wanneer u de eerste keer een aanvraag voor gebeurtenissen indient.
Maak een externe verbinding met uw VIRTUELE machine en open vervolgens een opdrachtprompt.
Typ vanaf de opdrachtprompt op uw VIRTUELE machine:
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01
Dit eerste antwoord kan maximaal 2 minuten duren. Vanaf nu moeten ze bijna onmiddellijk uitvoer weergeven.
Vanaf een computer waarop de Azure CLI is geïnstalleerd (zoals uw lokale computer), simuleert u een verwijdering met behulp van az vm simulate-eviction. Vervang de naam van de resourcegroep en de VM-naam door uw eigen naam.
az vm simulate-eviction --resource-group mySpotRG --name mySpot
De antwoorduitvoer heeft Status: Succeeded
als de aanvraag is gemaakt.
Ga snel terug naar de externe verbinding met de virtuele spot-machine en voer opnieuw een query uit op het eindpunt Geplande gebeurtenissen. Herhaal de volgende opdracht totdat u een uitvoer krijgt die meer informatie bevat:
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01
Wanneer de geplande gebeurtenisservice de verwijderingsmelding ontvangt, krijgt u een antwoord dat er ongeveer als volgt uitziet:
{"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"}]}
U kunt zien dat "EventType":"Preempt"
en de resource de VM-resource "Resources":["myspotvm"]
is.
U kunt ook de verwijderingsvoorwaarde van de virtuele machine zien door te "NotBefore"
controleren of de VM niet vóór de opgegeven tijd wordt verwijderd, zodat uw toepassing het venster zonder problemen kan sluiten.
Volgende stappen
U kunt ook een virtuele Azure Spot-machine maken met behulp van Azure PowerShell, portal of een sjabloon.
Voer een query uit op de huidige prijsinformatie met behulp van de API voor azure-retailprijzen voor informatie over Azure Spot Virtual Machine. De meterName
en skuName
beide bevatten Spot
.
Als er een fout optreedt, raadpleegt u Foutcodes.