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
Controllo del comportamento di riavvio
Impostato executionPolicy per script per controllare se viene eseguito nuovamente al riavvio.
Valore |
Comportamento |
Quando utilizzarlo |
|---|---|---|
|
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. |
|
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://): il profilo IAM dell'istanza deve essere presente sull'oggetto.bucket/keys3:GetObjectCon 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://): 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.hostname/path
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 |
|---|---|
|
Identificatore/nome del cluster |
|
Identificatore/nome del gruppo di nodi di calcolo |
|
Identificatore del nodo |
|
|
#!/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 |
|---|---|---|
|
Contrassegna il nodo come fallito e terminalo. |
Configurazione critica (supporti di archiviazione, accesso ad Active Directory). Impedisce il pagamento per i nodi danneggiati. |
|
Arresta gli script rimanenti nello stage e lascia il nodo in esecuzione. |
Debug: ispeziona l'istanza dopo un errore. |
|
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 ilonErrorcomportamento dello script (non è previsto alcun fallback per la copia memorizzata nella cache). Uno script aggiornato viene effettivamente eseguito nuovamente al riavvio solo se lo è.executionPolicyEVERY_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.