Terminazione e preavviso
Una Spot Instance è per definizione un'istanza effimera: può essere revocata in qualsiasi momento. La revoca (detta reclaim) non è però immediata — l'istanza riceve prima un preavviso, e solo allo scadere viene terminata.
Il preavviso di 2 minuti
Quando una spot viene selezionata per il reclaim:
- Lo stato dell'istanza passa a
terminatinge viene inviata una email di preavviso al proprietario del server. - Parte un countdown di 120 secondi: il momento di terminazione è fissato a
terminate_at = notified_at + 2 minuti. - Allo scadere del countdown l'istanza viene terminata e lo stato diventa
terminated.
Questi due minuti servono a permettere al workload di chiudersi in modo ordinato — salvare un checkpoint, drenare le connessioni, riaccodare il lavoro in corso.
Oltre all'email, il preavviso è rilevabile a livello programmatico: interrogando
GET /api/v2/servers/<servername>/spot-status lo stato passa a terminating e
i campi notified_at / terminate_at indicano rispettivamente l'istante del preavviso e il momento
esatto di terminazione. L'endpoint può essere interrogato in polling per reagire automaticamente al
reclaim.
Il reclaim è irreversibile
Una volta che l'istanza è entrata in terminating, non torna più attiva: non esiste una
transizione da terminating a ok. Per questo le Spot Instances vanno usate solo per workload
progettati per essere interrompibili (checkpoint periodici, code di lavoro con retry, worker
ridondati).
Stati di una Spot Instance
| Stato | Significato |
|---|---|
ok |
Attiva e reclamabile. È lo stato iniziale dopo la creazione. |
terminating |
Preavviso inviato: la terminazione è schedulata entro 2 minuti. Non reversibile. |
terminated |
Terminata, per reclaim completato oppure per cancellazione da parte dell'utente. |
promoted |
Promossa a on-demand: non più soggetta a reclaim. |
Il record di stato sopravvive alla terminazione del server: lo stato resta interrogabile via
GET .../spot-status anche dopo che l'istanza è stata terminata.
Come evitare la terminazione
Finché lo stato è ok, è possibile promuovere l'istanza a on-demand: la risorsa
viene bloccata e l'istanza esce definitivamente dal pool reclamabile. Attenzione però al tempismo —
una volta partito il preavviso (terminating) non è più possibile promuovere.
Verificare lo stato
- Da pannello:
- Da API:
GET /api/v2/servers/<servername>/spot-status, che restituiscestatus,notified_ateterminate_at.