View a markdown version of this page

Configura le azioni del ciclo di vita dei nodi in AWS PEZZI - AWS PEZZI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura le azioni del ciclo di vita dei nodi in AWS PEZZI

Le azioni del ciclo di vita dei nodi vengono definite nella configurazione del gruppo di nodi di calcolo. Questo argomento descrive come definire uno script, controllare se viene rieseguito al riavvio, archiviarlo, passargli argomenti, gestire gli errori, memorizzarlo nella cache, convalidarne l'integrità e leggerne i log.

Requisito della versione dell'agente

Le azioni relative al ciclo di vita dei nodi richiedono la versione 1.5.0-1 o successiva dell'agente AWS PCS. Se i nodi di calcolo utilizzano un'AMI personalizzata con una versione precedente dell'agente, aggiorna l'agente prima di configurare le azioni del ciclo di vita. Per ulteriori informazioni, consulta AWS Versioni dell'agente PCS.

Come definire uno script

Ogni script ha unname, unscriptSource, opzionalearguments, un onError criterio e unexecutionPolicy. I campi relativi alla posizione e all'integrità sono raggruppati inscriptSource.

{ "name": "My script", "scriptSource": { "scriptLocation": "s3://my-bucket/my-script.sh", "s3VersionId": "optional, S3 only", "checksum": "optional 64-char SHA-256 hex" }, "arguments": ["arg1", "arg2"], "onError": "TERMINATE", "executionPolicy": "FIRST_BOOT_ONLY" }

Aggiungi azioni del ciclo di vita a un gruppo di nodi di calcolo

È possibile aggiungere azioni del ciclo di vita quando si crea o si aggiorna un gruppo di nodi di calcolo. Usa o il. Console di gestione AWS AWS CLI

Console di gestione AWS
Per aggiungere azioni relative al ciclo di vita utilizzando la console
  1. Aprire la console AWS PCS.

  2. Aprire la pagina di creazione o aggiornamento per un gruppo di nodi di calcolo.

  3. Nella sezione Azioni del ciclo di vita del nodo, scegli Aggiungi script.

  4. Seleziona l'origine dello script:

    1. Aggiungi dalla libreria di script AWS PCS: fai riferimento a uno script AWS gestito. Per ulteriori informazioni, consulta Utilizzo AWS-script mantenuti per le azioni del ciclo di vita dei nodi in AWS 2 PEZZI.

    2. Aggiungi tramite S3: fai riferimento a uno script tramite il relativo URI Amazon S3.

    3. Aggiungi tramite HTTPS: fai riferimento a uno script tramite il suo URL HTTPS.

  5. Seleziona la fase del nodo.

  6. Per uno script che aggiungi tramite S3 o HTTPS, specifica queste impostazioni:

    1. Posizione dello script: immettete l'URI S3 o l'URL HTTPS per lo script.

    2. Nome: immettete un nome per lo script.

    3. (Facoltativo) Checksum: inserisci un SHA-256 checksum per verificare l'integrità dello script. Per ulteriori informazioni, consulta Integrità dello script (checksum).

    4. (Facoltativo) Per uno script che aggiungi tramite S3, inserisci una versione per fare riferimento a una versione specifica dell'oggetto.

  7. Per tutte le sorgenti di script, specificate queste impostazioni:

    1. Comportamento di gestione degli errori: seleziona TERMINATESTOP_SEQUENCE,, oCONTINUE.

    2. Politica di esecuzione: selezionare FIRST_BOOT_ONLY oEVERY_BOOT.

    3. (Facoltativo) Argomenti: aggiunge argomenti da passare allo script.

  8. Per aggiungere altri script, ripeti questi passaggi.

  9. Gli script vengono eseguiti dall'alto verso il basso all'interno di una fase. Per modificare l'ordine di esecuzione, scegli Azioni per uno script, quindi scegli Sposta su o Sposta giù.

  10. Per la politica di memorizzazione nella cache, seleziona CACHE_ONCE oREFRESH_ON_REBOOT. La politica di memorizzazione nella cache si applica a tutti gli script. Per ulteriori informazioni, consulta Memorizzazione nella cache e aggiornamenti degli script.

AWS CLI

Utilizzate il --node-lifecycle-actions parametro con il comando create-compute-node-group orupdate-compute-node-group. Per la struttura dei parametri, vedere NodeLifecycleActionsRequest nel AWS PCS API Reference. Per i comandi di esempio, vedereEsempi di azioni relative al ciclo di vita dei nodi per AWS 2 PEZZI.

Controllo del comportamento di riavvio

Impostato executionPolicy per script per controllare se viene eseguito nuovamente al riavvio.

Valore

Comportamento

Quando utilizzarlo

FIRST_BOOT_ONLY (predefinito)

Esegui lo script una volta, al primo avvio del nodo. Ignoralo a ogni riavvio successivo.

One-time configurazione, ad esempio l'installazione di pacchetti, l'aggiunta a un dominio o l'inizializzazione dello storage. Non è necessario rendere questi script idempotenti.

EVERY_BOOT

Esegui lo script al primo avvio e a ogni riavvio.

Configurazione che deve essere riapplicata dopo un riavvio, ad esempio rimontando un file system temporaneo o riaffermando lo stato del nodo.

Gli script sono impostati per essere eseguiti una volta e vengono saltati al FIRST_BOOT_ONLY riavvio. Gli script sono impostati per essere EVERY_BOOT eseguiti ad ogni avvio e devono essere idempotenti (possono essere eseguiti più di una volta con lo stesso risultato).

Posizioni di archiviazione degli script

Puoi archiviare gli script in Amazon S3 o inviarli tramite HTTPS. Gli script non possono essere caricati in linea tramite l'API e ogni script non deve superare i 2 MiB: l'agente rifiuta qualsiasi script che superi questa dimensione.

  • Amazon S3 (s3://bucket/key): il profilo IAM dell'istanza deve essere presente sull'oggetto. s3:GetObject Con un endpoint VPC gateway S3, i nodi nelle sottoreti private possono recuperare gli script tramite l'endpoint VPC. Aggiungi una versione specifica con (solo sedi S3). scriptSource.s3VersionId

  • HTTPS (https://hostname/path): l'host deve essere leggibile pubblicamente (nessuna autenticazione) e il nodo deve accedere a Internet in uscita (gateway Internet, gateway NAT o proxy HTTP). Ciò è utile per gli script ospitati su GitHub o altri repository pubblici.

L'archiviazione esterna fornisce il controllo della versione, la verificabilità e il riutilizzo tra i team. Gli script in linea o caricati non sono supportati.

Passaggio di argomenti agli script

Passa gli argomenti come una matrice ordinata. Raggiungono il tuo script come parametri posizionali della riga di comando.

arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)

L'agente esporta le variabili di ambiente in ogni script. Queste variabili contengono metadati di cluster e nodi.

Variabile

Descrizione

PCS_CLUSTER_ID / PCS_CLUSTER_NAME

Identificatore/nome del cluster

PCS_COMPUTE_NODE_GROUP_ID / PCS_COMPUTE_NODE_GROUP_NAME

Identificatore/nome del gruppo di nodi di calcolo

PCS_NODE_ID

Identificatore del nodo

PCS_IS_FIRST_BOOT

1al primo avvio del nodo, 0 a ogni successivo riavvio. Usalo per ramificare il comportamento negli EVERY_BOOT script.

#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"

Gestione degli errori

Ogni script ha un onError campo che controlla cosa succede quando uno script esce con un valore diverso da zero o viene interrotto da un segnale.

Valore

Comportamento

Quando utilizzarlo

TERMINATE (predefinito)

Contrassegna il nodo come fallito e terminalo.

Configurazione critica (supporti di archiviazione, accesso ad Active Directory). Impedisce il pagamento per i nodi danneggiati.

STOP_SEQUENCE

Arresta gli script rimanenti nello stage e lascia il nodo in esecuzione.

Debug: ispeziona l'istanza dopo un errore.

CONTINUE

Registra l'errore ed esegui lo script successivo.

Attività opzionali o eseguite con la massima efficienza.

Uno script fallisce se esce con un valore diverso da zero o viene interrotto da un segnale (ad esempio,). SIGSEGV Gli script non vengono ritentati. Se un'operazione potrebbe presentare errori temporanei, aggiungi la logica di riprova all'interno dello script. Il recupero (download) dello script, tuttavia, viene ripetuto, fino a 3 tentativi con backoff esponenziale (massimo circa 17 secondi), prima che il comportamento si applichi. onError

Memorizzazione nella cache e aggiornamenti degli script

L'agente scarica ogni script nell'istanza al primo avvio e lo archivia localmente. Due campi controllano il comportamento al riavvio: scriptCachingPolicy controlla il nuovo download e executionPolicy controlla la riesecuzione.

  • CACHE_ONCE(impostazione predefinita): scarica una volta al primo avvio, non recupera mai più. Il comportamento è identico tra i riavvii. L'aggiornamento del contenuto dello script richiede la sostituzione dell'istanza.

  • REFRESH_ON_REBOOT— Re-download ad ogni riavvio, sovrascrivere la cache. Ciò consente di inviare correzioni agli script tramite un riavvio. Richiede l'accesso alla rete a ogni avvio; se un aggiornamento non riesce, il download viene considerato un errore di recupero e viene applicato il onError comportamento dello script (non è previsto alcun fallback per la copia memorizzata nella cache). Uno script aggiornato viene effettivamente eseguito nuovamente al riavvio solo se lo è. executionPolicy EVERY_BOOT

La configurazione del ciclo di vita (gli script eseguiti, i relativi argomenti, la gestione degli errori e la politica di esecuzione) è sempre immutabile per istanza. La modifica ha UpdateComputeNodeGroup effetto solo sulle nuove istanze e attiva la DRAIN strategia, quindi i processi in esecuzione terminano prima che i nodi vengano sostituiti.

Integrità dello script (checksum)

Facoltativamente, fornisci SHA-256 checksum a in uno scriptscriptSource, come stringa esadecimale di 64 caratteri. L'agente lo convalida al momento del download; una mancata corrispondenza viene considerata come un errore di download e si attiva. onError Consigliamo un checksum per la produzione, in particolare per gli script provenienti da fonti condivise o esterne.

sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value

Registrazione e debug

Ogni script scrive nel proprio file di registro e l'agente mantiene il proprio registro operativo.

# agent: download, caching, checksum, orchestration /var/log/amazon/pcs/lifecycle/actions/executor.log # each script's stdout/stderr /var/log/amazon/pcs/lifecycle/actions/<stage>/<script-name>.log

Il nome del file di registro utilizza il nome dello script così come è stato definito. Gli spazi vengono mantenuti. Ad esempio, uno script denominato Mount EFS home directory write toMount EFS home directory.log. Connettiti con SSH o AWS Systems Manager Session Manager per leggerli: entrambi sono disponibili in nodeBootstrapped fase avanzata. Poiché i nodi con errori TERMINATE vengono sostituiti, i log di inoltro vengono rimossi dall'istanza per il debug dopo la terminazione: aggiungi uno script di avvio del nodo che configuri l' CloudWatch agente Amazon per inviare la directory dei log del ciclo di vita ad Amazon Logs. CloudWatch Lo script -maintenant esegue questa operazione. AWSconfigure-cloudwatch-logs.sh Per ulteriori informazioni, consulta Utilizzo AWS-script mantenuti per le azioni del ciclo di vita dei nodi in AWS 2 PEZZI.