Come faccio a utilizzare i provider di capacità Fargate Spot per Amazon ECS?

6 minuti di lettura
0

Voglio utilizzare i provider di capacità AWS Fargate Spot per Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Prima di iniziare, tieni presente quanto segue:

  • I provider di capacità Fargate e Fargate Spot non devono essere creati. ma sono disponibili per tutti gli account. È sufficiente associarli a un cluster per renderli disponibili per l'uso.
  • Il provider di capacità Fargate Spot può essere associato a un cluster esistente utilizzando l'API PutClusterCapacityProviders ECS e il riferimento ai comandi CLI put-cluster-capacity-providers ECS. La console di gestione AWS non supporta l'aggiunta di provider di capacità Fargate Spot a un cluster esistente.
  • I provider di capacità Fargate e Fargate Spot sono riservati e non possono essere eliminati. È possibile dissociarli da un cluster utilizzando l'API PutClusterCapacityProviders.
  • Fargate Spot richiede che l'attività utilizzi la versione della piattaforma 1.3.0 o successiva (per Linux) e il provider di capacità Fargate Spot non è supportato per i container Windows su Fargate.

Risoluzione

Nota: In caso di errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando (CLI) di AWS, assicurati di utilizzare la versione più recente di AWS CLI.

Crea, associa e dissocia il provider di capacità Fargate Spot al cluster

I provider di capacità Fargate Spot vengono associati automaticamente al cluster quando vengono creati dalla console Amazon ECS utilizzando il modello di cluster Solo reti. Per ulteriori informazioni, consulta Creazione di un cluster per il tipo di avvio Fargate attraverso la nuova console.

Associa il provider di capacità Fargate Spot al cluster

Se il provider di capacità Fargate Spot non è già associato, puoi associarlo al tuo cluster utilizzando l'API PutClusterCapacityProviders o il seguente comando AWS CLI:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE FARGATE_SPOT \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --region <Region>

Importante: Per evitare di sovrascrivere i provider di capacità, includi tutti i provider di capacità esistenti e la strategia del provider di capacità nel comando precedente. I provider di capacità che non sono inclusi nel comando vengono dissociati dal cluster.

Dissocia il provider di capacità Fargate Spot con il cluster

Tutti i provider di capacità esistenti associati al cluster e omessi da una chiamata API PutClusterCapacityProviders verranno dissociati dal cluster. Per dissociare il provider di capacità Fargate Spot dal cluster Amazon ECS, esegui il seguente comando AWS CLI:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 \
        --region <Region>

Verifica che il tuo provider di capacità Fargate Spot sia associato al cluster Amazon ECS

Per verificare che il provider di capacità Fargate Spot sia associato al cluster Amazon ECS, esegui il seguente comando:

aws ecs describe-clusters \
        --cluster <Cluster_name> \
        --region <Region>

L'output è simile al seguente:

Output:
      "capacityProviders": [
           "FARGATE",
           "FARGATE_SPOT"
      ]

Nota: L'output del comando precedente include la sezione capacityProviders che contiene i provider di capacità associati al cluster Amazon ECS.

Esegui un'attività o crea un servizio utilizzando il provider di capacità Fargate Spot

Per eseguire un'operazione utilizzando un provider di capacità Fargate Spot, esegui il seguente comando:

aws ecs run-task \
        --cluster <Cluster_name> \
        --capacity-provider-strategy capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_definition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --count <Number_of_Tasks> \
        --region <Region>

Per creare un servizio Amazon ECS che utilizza i provider di capacità Fargate Spot, esegui il seguente comando:

aws ecs create-service \
        --cluster <Cluster_name> \
        --service-name <Service_name> \
        --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_defintition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --desired-count <Number_of_tasks> \
        --region <Region>

Verifica che le attività siano in esecuzione sul provider di capacità Fargate Spot

Per confermare che le attività utilizzano i provider di capacità Fargate, esegui il seguente comando:

aws ecs describe-tasks
        --cluster <Cluster_name> \
        --tasks <TaskID> \
        --region <Region>

Il monitoraggio dell'utilizzo di Fargate OnDemand e Fargate Spot per servizio di Amazon CloudWatch non è attualmente supportato. Tuttavia, è possibile visualizzare il parametro per l'utilizzo totale di Fargate OnDemand e Spot usando CloudWatch. Per ulteriori informazioni, consulta Parametri di utilizzo di AWS Fargate.

Domande frequenti

Quali sono alcune migliori pratiche per Fargate Spot?

  • Fargate Spot è uno strumento ideale per carichi di lavoro senza stato e a tolleranza all’errore, ma è consigliabile non affidarsi esclusivamente a Spot Tasks per i carichi di lavoro critici. Configura piuttosto un mix di attività Fargate regolari.
  • Gestisci le interruzioni correttamente catturando i segnali SIGTERM. Quando si riceve un segnale SIGTERM, è consigliabile impostare StopTimeout a 120 secondi. Per ulteriori informazioni, consulta Arresti normali con ECS.
  • Le applicazioni in esecuzione su Fargate Spot devono essere a tolleranza all’errore.

Cosa succede alle attività quando la capacità FARGATE_SPOT non è disponibile?

Quando il pianificatore ECS non è in grado di avviare un'attività a causa della mancata disponibilità di capacità, viene emesso l'evento SERVICE_TASK_PLACEMENT_FAILURE. L’attività non passerà alla prima fase PROVISIONING e non verranno visualizzati avvisi negli eventi ECS. Il pianificatore ECS continuerà a provare ad avviare l'attività. Se la capacità diventa disponibile, verrà emesso l'evento SERVICE_STEADY_STATE.

Esiste un failover su Fargate quando non è disponibile alcuna capacità Fargate Spot?

Non è possibile disporre di un meccanismo di failback su FARGATE quando non è disponibile alcuna capacità FARGATE_SPOT.

Qual è un esempio di inserimento di attività quando si utilizzano i provider di capacità in un servizio ECS?

Per questo esempio, è prevista una strategia del provider di capacità che contiene i due provider di capacità seguenti:

Provider 1: FARGATE      |  Base:2   Weight:1
Provider 2: FARGATE_SPOT |  Base:0   Weight:3

In base a questa strategia, una volta soddisfatto il valore di base, per ogni attività eseguita utilizzando FARGATE, tre attività utilizzano FARGATE_SPOT. Quando il servizio ECS viene creato con il numero desiderato di 5, si verifica quanto segue:

  • 2 attività vengono avviate utilizzando FARGATE per soddisfare il valore di base e le restanti 3 vengono suddivise tra FARGATE e FARGATE_SPOT in un rapporto di 1:3.
  • 3 attività vengono eseguite utilizzando FARGATE e 2 attività in FARGATE\ _SPOT.

Usando questa stessa strategia, con un evento di scalabilità orizzontale il conteggio desiderato viene aumentato a 9. Il pianificatore ECS verificherà che 3 attività siano già state eseguite utilizzando FARGATE e che la base sia soddisfatta. Inoltre, verificherà che le nuove 4 attività in stato PROVISIONING siano suddivise tra FARGATE e FARGATE_SPOT in un rapporto di 1:3. Le ultime 4 attività vengono eseguite utilizzando FARGATE e 5 attività in FARGATE_SPOT.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa