Istanze spot
Le istanze spot sono versioni fortemente scontate delle istanze standard. Sono progettati per utilizzare le risorse di calcolo disponibili per carichi di lavoro interrompibili o stateless. Le istanze spot possono essere preemptate (o sfrattate) in qualsiasi momento.
Con le istanze Spot è possibile scegliere il profilo compatibile più adatto alle caratteristiche del carico di lavoro, alle esigenze di prestazioni e al prezzo. Le istanze spot sono ideali per i carichi di lavoro a tolleranza d'errore e interrompibili, perché IBM Cloud VPC le sostituisce in base alla richiesta di risorse.
Le istanze Spot sono ideali per, ma non solo, i seguenti carichi di lavoro.
- Server di test di sviluppo
- Analisi di dati
- Rendering dell'immagine
- Containerizzazione
- Elaborazione batch
Vantaggi dell'istanza spot
Le istanze spot presentano i seguenti vantaggi.
- Efficiente dal punto di vista dei costi
- Scalabile: è possibile aggiungere o rimuovere istanze Spot tramite la funzione Auto scale per VPC
- Le istanze Spot non utilizzano la quota di istanza standard. Le istanze Spot hanno le proprie quote (l'impostazione predefinita è 100).
- Nessun tempo minimo di esecuzione
- Ridimensionabile (l'istanza deve essere fermata per essere ridimensionata)
Limitazioni dell'istanza spot
Le istanze Spot non sono compatibili con le seguenti funzioni.
- Istanze burstable
- Host dedicati
- Prenotazioni
Dettagli sulle istanze spot
- Le istanze Spot supportano solo i profili GPU e i profili Flex.
- La scala automatica e i gruppi di istanze supportano le istanze Spot.
- I gruppi di collocamento sono supportati, ma si tenga presente che l'uso dei gruppi di collocamento può causare errori di capacità.
Le istanze spot non garantiscono la capacità disponibile. Se la capacità non è disponibile, è possibile provare in un'altra zona o regione o riprovare più tardi.
I profili di istanza hanno una proprietà chiamata classe_disponibilità che può essere "standard", "spot" o entrambe. Se "spot" è presente nell'array di valori, è possibile utilizzare il profilo per creare un'istanza di spot.
Quando si crea un'istanza, è necessario impostare un paio di nuovi campi:
- availability.class deve essere "spot"
- availability_policy.preemption può essere "stop" o "delete" (l'impostazione predefinita è "stop")
Vedere il seguente esempio di proprietà in una richiesta API.
{
"availability": {
"class": "spot"
},
"availability_policy": {
"preemption": "delete"
},
...
}
Preferenza
La prelazione di un'istanza Spot avviene quando la piattaforma stabilisce che è necessario sfrattare l'istanza Spot. All'inizio della prelazione, viene applicata la politica di prelazione e inizia un periodo di grazia di prelazione best-effort di 30 secondi. Al termine di questo periodo di grazia, l'istanza spot viene chiusa forzatamente.
La politica di prelazione determina il comportamento dell'istanza Spot quando l'istanza viene pretermessa. La proprietà availability_policy.preemption, quando viene aggiunta alle istanze supportate, ha un valore di "stop"
o "delete". Questa proprietà si applica solo alle istanze spot in cui availability.class = spot.
- "stop" - l'istanza passa allo stato di stop quando la prelazione è completata. È possibile avviare nuovamente l'istanza o eliminarla.
- "delete": l'istanza viene eliminata dopo la prelazione.
Le modifiche apportate al criterio di prelazione durante una prelazione non vengono applicate fino alla prelazione successiva.
La notifica di una prelazione avviene in due modi.
- Viene emesso un comando di spegnimento anticipato all'interno del sistema operativo dell'istanza Spot. Questo comando di spegnimento può essere risposto in modo programmatico all'interno del guest.
- Quando un'istanza spot viene selezionata per la prelazione, all'inizio del processo di prelazione viene inviato un log rivolto all'utente. Esempio: " instance.00002 ": "L'istanza spot {{.instanceID}} è selezionata per la prelazione". Dopo 30 secondi e se l'istanza spot non è ancora stata arrestata, viene emesso un arresto forzato all'interno del guest. Per ulteriori informazioni sulla registrazione, vedere Registrazione per VPC.
Le istanze spot che vengono eliminate a causa del ridimensionamento con un gruppo di istanze non sono considerate in prelazione, quindi il criterio di prelazione viene ignorato.
Quando un'istanza spot viene preemptata, al sistema operativo dell'istanza spot viene inviato un comando di arresto preventivo. Questa richiesta di spegnimento può essere intercettata e uno script di spegnimento può essere eseguito creando
lo script di spegnimento e aggiungendolo a un file di servizio systemd. Un esempio di script si trova all'indirizzo usr/local/bin/ibm-cloud-shutdown-script.sh.
#!/bin/bash
OUTPUT_FILE="/tmp/counter.out"
counter=0
while true; do
echo "$counter" > "$OUTPUT_FILE"
((counter++))
sleep 1
done
Questo script è un segnaposto per l'esecuzione di un arresto. Per eseguire lo script dal file di servizio systemd, aggiungere il percorso dello script nel campo ExecStop del file di servizio, come mostrato nell'esempio
seguente.
Esempio systemd file di servizio che si trova all'indirizzo /etc/systemd/system/ibm-cloud-shutdown-script.service:
[Unit]
Description=IBM Cloud Shutdown Script
Wants=network-online.target rsyslog.service
After=network-online.target rsyslog.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=true
ExecStop=/usr/local/bin/ibm-cloud-shutdown-script.sh
TimeoutStopSec=0
KillMode=process
[Install]
WantedBy=multi-user.target
L'intervallo di tempo tra il comando di spegnimento anticipato e il successivo comando di arresto forzato è di 30 secondi. Pertanto, se uno script di arresto è ancora in esecuzione dopo i 30 secondi, viene interrotto dal force stop. Questo periodo di tolleranza di 30 secondi è un tentativo di massima efficacia e può variare a seconda delle circostanze.
Creare nuovamente un'istanza spot utilizzando un gruppo di istanze
Quando un'istanza spot viene preempita, se è membro di un gruppo di istanze, il gruppo di istanze tenta di creare un'istanza spot per sostituire l'istanza spot preempita. La nuova istanza spot viene creata e collegata a una delle sottoreti specificate nell'array di sottoreti del gruppo di istanze.
Se si desidera ricreare automaticamente un'istanza spot dopo la prelazione, è possibile utilizzare un gruppo di istanze per ricreare queste istanze spot.
-
Create un modello di istanza adatto alle vostre esigenze con le istanze da availability.class a
spote da availability_policy.preemption adelete. -
Creare un gruppo di istanze con il modello di istanza creato.
Per aumentare la probabilità di trovare capacità per l'istanza spot (se la capacità è limitata in una zona), specificare più sottoreti distribuite tra le zone della regione per ottenere un'alta disponibilità. { :tip}
Per mantenere le istanze preempted in uno stato di stop, è necessario specificare stop per la configurazione availability_policy.preemption_. Dopo la creazione dell'istanza spot da parte del gruppo di istanze, è necessario inviare
un PATCH /instance_groups/{instance_group_id}/memberships/{id} e specificare false per la proprietà eliminare_instanza_su_membri_cancellati.