Utilizzo della capacità prerilasciabile per eseguire il provisioning dei nodi di lavoro

Scopri come specificare la capacità prerilasciabile per le istanze di computazione che ospitano nodi di lavoro nei pool di nodi dei cluster creati utilizzando Kubernetes Engine (OKE).

Quando si utilizza Kubernetes Engine per definire la configurazione di posizionamento di un pool di nodi, è possibile specificare la capacità prerilasciabile come tipo di capacità per le istanze di computazione che ospitano nodi di lavoro nel pool di nodi. La specifica della capacità anticipabile consente di risparmiare denaro mediante l'utilizzo di istanze prerilasciabili per eseguire carichi di lavoro che devono essere eseguiti solo per brevi periodi o che possono essere interrotti quando la capacità viene richiesta.

Le istanze prerogative si comportano allo stesso modo delle normali istanze di computazione, ma la capacità viene richiesta quando è necessaria altrove e le istanze vengono terminate. Se i carichi di lavoro sono tolleranti agli errori e sono in grado di resistere alle interruzioni, le istanze anticipabili possono ridurre i costi. Ad esempio, è possibile utilizzare le istanze prorogabili per ottimizzare i costi per i carichi di lavoro in grado di tollerare le interruzioni, ad esempio i test che possono essere arrestati e ripresi in un secondo momento. Per ulteriori informazioni, vedere Istanze prerilasciabili.

Quando un'istanza prerilasciabile che ospita un nodo di lavoro deve essere interrotta, viene inviata una notifica a Kubernetes Engine. Prima che l'istanza del nodo venga arrestata, Kubernetes Engine:

  • cordoni il nodo di lavoro per impedire al kube-scheduler di posizionare nuovi pod su quel nodo
  • svuota il nodo di lavoro per rimuovere in modo sicuro i pod, garantendo che i contenitori del pod terminino in modo normale ed eseguano qualsiasi pulizia necessaria

Dopo l'interruzione di un'istanza prerilasciabile che ospita un nodo di lavoro, Kubernetes Engine tenta di creare una nuova istanza prerilasciabile come sostituzione. Se Kubernetes Engine non è in grado di creare un'istanza prerilasciabile di sostituzione dopo più tentativi, viene restituito un messaggio.

Quando si sceglie la capacità prerilasciabile come tipo di capacità per un pool di nodi:

  • Kubernetes Engine aggiunge automaticamente un'etichetta Kubernetes oci.oraclecloud.com/oke-is-preemptible=true ai nodi di lavoro ospitati su istanze prerilasciabili. È possibile utilizzare l'etichetta con i selettori dei nodi Kubernetes e l'affinità/antiaffinità dei nodi per controllare i pod pianificati in tali nodi di lavoro. Vedere Assegnazione dei pod ai nodi nella documentazione di Kubernetes.
  • Kubernetes Engine aggiunge automaticamente un Kubernetes taint oci.oraclecloud.com/oke-is-preemptible ai nodi di lavoro ospitati su istanze prerilasciabili. Puoi usare il taint con le tolleranze Kubernetes per controllare quali pod sono pianificati su quei nodi di lavoro. Vedere Taints and Tolerations nella documentazione di Kubernetes.
  • È possibile specificare se i volumi di avvio collegati alle istanze prerilasciabili che ospitano nodi di lavoro vengono eliminati definitivamente se le istanze vengono arrestate.

Tenere presente quanto riportato di seguito.

  • Molte forme di computazione, ma non tutte, supportano le istanze prerilasciabili. In particolare, si noti che le istanze prerilasciabili non sono supportate dalle forme Bare Metal. Non è possibile creare un pool di nodi con un tipo di capacità di capacità prerilasciabile se la forma del pool di nodi non supporta istanze prerilasciabili. Analogamente, non è possibile modificare il tipo di capacità di un pool di nodi in capacità prerilasciabile se la forma del pool di nodi non supporta istanze prerilasciabili.
  • Le istanze prerilasciabili hanno una serie di limitazioni e restrizioni. Vedere Supporto e limitazioni.
  • Le modifiche apportate alle proprietà dei nodi di lavoro si applicano solo ai nuovi nodi di lavoro. L'aggiornamento del tipo di capacità associato a un pool di nodi non influisce sulle proprietà dei nodi di lavoro esistenti.

Procedure ottimali per l'utilizzo della capacità prerilasciabile

Quando si sceglie la capacità prerilasciabile come tipo di capacità per un pool di nodi, tenere presenti le procedure ottimali riportate di seguito.

  • Le istanze prerilasciabili sono più adatte per carichi di lavoro containerizzati tolleranti agli errori. Quando si progettano applicazioni che potrebbero essere eseguite su istanze prerilasciabili, si supponga che la capacità prerilasciabile possa essere recuperata (e le istanze prerilasciabili terminate) in qualsiasi momento.
  • Utilizza i selettori dei nodi Kubernetes e l'affinità/anti-affinità dei nodi, insieme a taint e tolleranze Kubernetes, per garantire che solo i carichi di lavoro tolleranti agli errori siano pianificati per l'esecuzione in istanze prerilasciabili. Vedere Assegnazione dei pod ai nodi nella documentazione di Kubernetes.
  • Oracle consiglia di non specificare la capacità prerilasciabile come tipo di capacità per il pool di nodi primario in un cluster. Specificare invece solo la capacità prerilasciabile per pool di nodi aggiuntivi che integrano il pool di nodi primario del cluster.
  • Oracle consiglia di evitare la situazione in cui un pool di nodi dispone di una combinazione di tipi di capacità. Sebbene sia supportata una combinazione di tipi di capacità nello stesso pool di nodi, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi. Ad esempio, Oracle consiglia di:
    • evitare di specificare la capacità su richiesta in un dominio di disponibilità e la capacità prerilasciabile in un secondo dominio di disponibilità
    • evitare di modificare il tipo di capacità da capacità su richiesta a capacità prerilasciabile quando si esegue lo scale-up di un pool di nodi per aggiungere altri nodi

Utilizzo di Console

Creazione di un cluster e specifica della capacità prerilasciabile

  1. Seguire le istruzioni per creare un cluster utilizzando il workflow 'Creazione personalizzata'. Vedere Utilizzo della console per creare un cluster con impostazioni definite in modo esplicito nel workflow 'Creazione personalizzata'.
  2. Quando si specifica la configurazione del posizionamento per un pool di nodi nel cluster:
    1. Specificare il primo dominio di disponibilità e la prima subnet:
      • Dominio di disponibilità: selezionare il dominio di disponibilità in cui inserire i nodi di lavoro.
      • Dominio di errore: (facoltativo) uno o più domini di errore nel dominio di disponibilità in cui posizionare i nodi di lavoro.
      • Subnet: selezionare la subnet configurata per ospitare i nodi di lavoro.
    2. Fare clic su Mostra opzioni avanzate e specificare che si desidera utilizzare le istanze prerilasciabili per eseguire il provisioning dei nodi di lavoro nel pool di nodi.

      • Tipo di capacità: selezionare Capacità prerilasciabile.
      • Una volta recuperato, elimina definitivamente il volume di avvio collegato: scegliere se eliminare definitivamente il volume di avvio collegato quando la capacità viene recuperata.
    3. Facoltativamente, fare clic su Altra riga per aggiungere ulteriori domini di disponibilità, subnet e tipi di capacità alla configurazione del posizionamento. Se si specificano più domini di disponibilità nella configurazione di posizionamento di un pool di nodi, è possibile specificare un tipo di capacità diverso per ogni dominio di disponibilità. Tuttavia, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi.

Creazione di un pool di nodi e specifica della capacità prerilasciabile

  1. Aprire il menu di navigazione e selezionare Developer Services. In Container e artifact, selezionare Cluster Kubernetes (OKE).
  2. Scegliere un compartimento in cui si dispone dell'autorizzazione per lavorare.
  3. Nella pagina Elenco cluster, fare clic sul nome del cluster in cui si desidera creare un nuovo pool di nodi.
  4. Nella pagina Cluster, visualizzare la scheda Pool di nodi, quindi fare clic su Aggiungi pool di nodi per creare un nuovo pool di nodi e specificare le proprietà richieste per i relativi nodi di lavoro.
  5. Quando si specifica la configurazione del posizionamento per un pool di nodi nel cluster:
    1. Specificare il primo dominio di disponibilità e la prima subnet:
      • Dominio di disponibilità: selezionare il dominio di disponibilità in cui inserire i nodi di lavoro.
      • Dominio di errore: (facoltativo) uno o più domini di errore nel dominio di disponibilità in cui posizionare i nodi di lavoro.
      • Subnet: selezionare la subnet configurata per ospitare i nodi di lavoro.
    2. Fare clic su Mostra opzioni avanzate e specificare che si desidera utilizzare le istanze prerilasciabili per eseguire il provisioning dei nodi di lavoro nel pool di nodi.

      • Tipo di capacità: selezionare Capacità prerilasciabile.
      • Una volta recuperato, elimina definitivamente il volume di avvio collegato: scegliere se eliminare definitivamente il volume di avvio collegato quando la capacità viene recuperata.
    3. Facoltativamente, fare clic su Altra riga per aggiungere ulteriori domini di disponibilità, subnet e tipi di capacità alla configurazione del posizionamento. Se si specificano più domini di disponibilità nella configurazione di posizionamento di un pool di nodi, è possibile specificare un tipo di capacità diverso per ogni dominio di disponibilità. Tuttavia, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi.

Aggiornamento di un pool di nodi e definizione della capacità prerilasciabile

  1. Aprire il menu di navigazione e selezionare Developer Services. In Container e artifact, selezionare Cluster Kubernetes (OKE).
  2. Scegliere un compartimento in cui si dispone dell'autorizzazione per lavorare.
  3. Nella pagina Elenco cluster fare clic sul nome del cluster che si desidera modificare.
  4. Fare clic su Pool di nodi in Risorse e fare clic sul nome del pool di nodi che si desidera modificare.
  5. Nella pagina Dettagli pool di nodi fare clic su Modifica.
  6. Quando si specifica la configurazione del posizionamento per un pool di nodi nel cluster:
    1. Specificare il primo dominio di disponibilità e la prima subnet:
      • Dominio di disponibilità: selezionare il dominio di disponibilità in cui inserire i nodi di lavoro.
      • Dominio di errore: (facoltativo) uno o più domini di errore nel dominio di disponibilità in cui posizionare i nodi di lavoro.
      • Subnet: selezionare la subnet configurata per ospitare i nodi di lavoro.
    2. Fare clic su Mostra opzioni avanzate e specificare che si desidera utilizzare le istanze prerilasciabili per eseguire il provisioning dei nodi di lavoro nel pool di nodi.

      • Tipo di capacità: selezionare Capacità prerilasciabile.
      • Una volta recuperato, elimina definitivamente il volume di avvio collegato: scegliere se eliminare definitivamente il volume di avvio collegato quando la capacità viene recuperata.
    3. Facoltativamente, fare clic su Altra riga per aggiungere ulteriori domini di disponibilità, subnet e tipi di capacità alla configurazione del posizionamento. Se si specificano più domini di disponibilità nella configurazione di posizionamento di un pool di nodi, è possibile specificare un tipo di capacità diverso per ogni dominio di disponibilità. Tuttavia, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi.
  7. Salvare le modifiche.

Uso dell'interfaccia CLI

Per informazioni sull'uso dell'interfaccia CLI, vedere Command Line Interface (CLI). Per un elenco completo dei flag e delle opzioni disponibili per i comandi CLI, vedere il documento Command Line Reference.

Creazione di un pool di nodi e specifica della capacità prerilasciabile

Per utilizzare l'interfaccia CLI per creare un pool di nodi che utilizza la capacità prerilasciabile per eseguire il provisioning dei nodi di lavoro, includere l'argomento preemptibleNodeConfig nel parametro --placement-configs.

Ad esempio:

oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd \
--name test-node \
--node-image-id ocid1.image.oc1.iad.aaaaaaaa6______nha \
--compartment-id oocid1.compartment.oc1..aaaaaaaay______t6q \
--kubernetes-version v1.21.5 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"IqDk:US-ASHBURN-AD-2\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva\", \"faultDomains\":[\"FAULT-DOMAIN-3\", \"FAULT-DOMAIN-1\"]}, {\"availability-domain\":\"IqDk:US-ASHBURN-AD-1\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaauhls______bpq\", \"faultDomains\": [\"FAULT-DOMAIN-1\", \"FAULT-DOMAIN-2\"]}]" \
--size 1 \
--region=us-ashburn-1 \

Se si specificano più domini di disponibilità nella configurazione di posizionamento di un pool di nodi, è possibile specificare un tipo di capacità diverso per ogni dominio di disponibilità. Tuttavia, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi.

Uso dell'API

Per informazioni sull'uso dell'API e delle richieste di firma, consulta la documentazione dell'API REST e le credenziali di sicurezza. Per informazioni sugli SDK, vedere SDK e l'interfaccia CLI.

Utilizzare l'attributo placementConfigs dell'oggetto nodeConfigDetails per specificare il tipo di capacità durante la creazione o l'aggiornamento dei pool di nodi.

Se si specificano più domini di disponibilità nella configurazione di posizionamento di un pool di nodi, è possibile specificare un tipo di capacità diverso per ogni dominio di disponibilità. Tuttavia, Oracle consiglia che tutti i nodi di lavoro nel pool di nodi abbiano lo stesso tipo di capacità per semplificare la gestione del pool di nodi.