Günstige unterbrechbare VM benötigt? Erstelle eine Spot-VM

Veröffentlicht am:

CloudTrips benötigt günstige Compute-Kapazität für eine entbehrliche Batch- oder Testworkload. Eine Azure-Spot-VM verwendet ungenutzte Azure-Kapazität mit Rabatt. Azure kann sie jedoch mit ungefähr 30 Sekunden Vorwarnung entfernen, wenn die Kapazität anderweitig benötigt wird.

Spot-VMs besitzen keine Verfügbarkeits-SLA. Verwende sie nur für unterbrechbare Workloads, die einen Vorgang wiederholen, neu starten oder ab einem Prüfpunkt fortsetzen können. Verwende keine einzelne Spot-VM für eine produktive Anwendung, Datenbank oder einen anderen kritischen Dienst.

Verstehe Preis und Entfernung

Einstellung Bedeutung
Höchstpreis Höchster akzeptierter Stundenpreis
Höchstpreis -1 Aktueller Spot-Preis bis zum regulären VM-Preis; keine preisbasierte Entfernung
Kapazitätsentfernung Azure fordert die VM-Kapazität zurück
Deallokierungsrichtlinie Stoppt und deallokiert die VM, behält aber Ressource und Datenträger
Löschrichtlinie Löscht die VM und entsprechend den Löscheinstellungen zugehörige Datenträger

Dieser Trip verwendet -1 und Deallocate. Die VM kann weiterhin aus Kapazitätsgründen entfernt werden. Ein erneuter Start ist nicht garantiert, weil Spot-Kapazität fehlen kann.

Erstelle die Ressourcengruppe

Erstelle:

Subscription: CloudTrips TEST
Resource group: rg-cloudtrips-spot-test-weu
Region: West Europe

Konfiguriere die Spot-VM

Öffne Virtual machines > Create > Azure virtual machine. Konfiguriere unter Basics:

Resource group: rg-cloudtrips-spot-test-weu
Virtual machine name: vm-cloudtrips-spot01-test-weu
Region: West Europe
Availability options: No infrastructure redundancy required
Security type: Trusted launch virtual machines
Image: Ubuntu Server 24.04 LTS - x64 Gen2
Size: Standard_D2s_v3
Run with Azure Spot discount: Enabled
Eviction type: Capacity only
Eviction policy: Stop / Deallocate
Authentication type: SSH public key
Username: azureuser
SSH public key source: Generate new key pair
Key pair name: sshkey-cloudtrips-spot-test-weu-01
Public inbound ports: None

Bei Eviction type: Capacity only zeigt das Portal kein Feld Maximum price an. Azure verwendet den entsprechenden Höchstpreis -1. Die VM kann weiterhin entfernt werden, wenn Azure die Kapazität benötigt, aber nicht wegen eines steigenden Spot-Preises.

Wähle View pricing history and compare prices in nearby regions. Prüfe den aktuellen Spot-Preis und die historische Entfernungsrate für Größe und Region. Eine niedrige historische Rate garantiert keine zukünftige Kapazität.

Registerkarte „Basics“ der Spot-VM mit aktiviertem Spot-Rabatt, „Capacity only“ und Deallokierungsrichtlinie

Konfiguriere Datenträger und Netzwerk

Verwende unter Disks:

OS disk type: Standard SSD LRS
Delete with VM: Enabled

Erstelle unter Networking:

Virtual network: vnet-cloudtrips-spot-test-weu
Address range: 10.85.0.0/16
Subnet: snet-workers
Subnet range: 10.85.1.0/24
Public IP: None
NIC network security group: None

Die VM besitzt keinen öffentlichen Verwaltungsendpunkt. Verwende für dieses Lab Azure Run Command. Füge die üblichen CloudTrips-TEST-Tags hinzu, wähle **Review

  • create**, prüfe Spot-Bedingungen und geschätzten Preis und wähle Create.

Die Spot-Zuweisung kann sofort fehlschlagen, wenn für Region und Größe keine Spot-Kapazität verfügbar ist. Wähle eine andere angebotene Größe oder Region, statt davon auszugehen, dass die Kapazität verfügbar wird.

Überprüfe die Spot-Eigenschaften

Öffne nach der Bereitstellung die VM > Overview und bestätige, dass sie ausgeführt wird. Öffne Properties oder Configuration und überprüfe die vom Portal angezeigten Werte:

Azure Spot eviction policy: Stop / Deallocate
Azure Spot eviction type: -

Der Bindestrich bedeutet nicht, dass Spot deaktiviert ist. Das Portal kann auch Maximum price auslassen. Verwende die folgende CLI-Abfrage, um die zugrunde liegenden Spot-Eigenschaften einschließlich Priority und MaxPrice zu prüfen.

VM-Eigenschaften mit der Azure-Spot-Entfernungsrichtlinie „Stop / Deallocate“ und einem Bindestrich beim Entfernungstyp

Du kannst auch das Abrechnungsprofil abfragen:

az vm show \
  --resource-group rg-cloudtrips-spot-test-weu \
  --name vm-cloudtrips-spot01-test-weu \
  --query "{Priority:priority,EvictionPolicy:evictionPolicy,MaxPrice:billingProfile.maxPrice}" \
  --output table

Schreibe einen Testprüfpunkt

Öffne Run command > RunShellScript und führe aus:

printf 'CloudTrips Spot checkpoint\nHost: %s\n' "$(hostname)" |
  sudo tee /var/lib/cloudtrips-spot-checkpoint.txt

cat /var/lib/cloudtrips-spot-checkpoint.txt

Ein echter unterbrechbarer Job sollte seinen Fortschritt in dauerhaftem externen Speicher sichern. Diese lokale Datei demonstriert die Datenträgeraufbewahrung mit Deallocate, würde aber Verlust oder Löschung des Betriebssystemdatenträgers nicht überstehen.

Simuliere eine Entfernung

Führe in Azure Cloud Shell aus:

az vm simulate-eviction \
  --resource-group rg-cloudtrips-spot-test-weu \
  --name vm-cloudtrips-spot01-test-weu

Die Anfrage sollte Erfolg melden. Warte und prüfe den VM-Status:

az vm get-instance-view \
  --resource-group rg-cloudtrips-spot-test-weu \
  --name vm-cloudtrips-spot01-test-weu \
  --query "instanceView.statuses[?starts_with(code, 'PowerState/')].displayStatus" \
  --output tsv

Erwarteter Status:

VM deallocated

Übersicht der Spot-VM im deallokierten Zustand nach simulierter Entfernung

Die VM verarbeitet keine Arbeit mehr, aber VM-Ressource und Betriebssystemdatenträger bleiben erhalten. Du kannst Start versuchen. Die Zuweisung kann abhängig von der aktuellen Spot-Kapazität erfolgreich sein oder fehlschlagen. Überprüfe nach einem erfolgreichen Start mit Run Command, dass die Prüfpunktdatei noch existiert.

Bereinige

Lösche die eigene Ressourcengruppe unabhängig davon, ob die VM neu gestartet werden kann:

az group delete \
  --name rg-cloudtrips-spot-test-weu \
  --yes

Überprüfe, dass az group exists --name rg-cloudtrips-spot-test-weu den Wert false zurückgibt.