Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configure las acciones del ciclo de vida del nodo en AWS PC
Las acciones del ciclo de vida de los nodos se definen en la configuración del grupo de nodos de procesamiento. En este tema, se describe cómo definir un script, controlar si se vuelve a ejecutar al reiniciar, almacenarlo, pasarle argumentos, gestionar los errores, almacenarlo en caché, validar su integridad y leer sus registros.
Requisito de versión del agente
Las acciones del ciclo de vida de los nodos requieren la versión 1.5.0-1 o posterior del agente AWS PCS. Si sus nodos de procesamiento utilizan una AMI personalizada con una versión anterior del agente, actualice el agente antes de configurar las acciones del ciclo de vida. Para obtener más información, consulte AWS Versiones del agente PCS.
Cómo definir un script
Cada script tiene un namescriptSource, un opcionalarguments, una onError política y unexecutionPolicy. Los campos de ubicación e integridad se agrupan enscriptSource.
{ "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" }
Agrega acciones del ciclo de vida a un grupo de nodos de procesamiento
Puedes agregar acciones del ciclo de vida al crear o actualizar un grupo de nodos de procesamiento. Usa el Consola de administración de AWS o el AWS CLI.
Controlar el comportamiento de reinicio
Se configura executionPolicy por script para controlar si se vuelve a ejecutar al reiniciar.
Valor |
Comportamiento |
Cuándo se debe usar |
|---|---|---|
|
Ejecute el script una vez, en el primer arranque del nodo. Sáltelo en cada reinicio posterior. |
One-time configuración, como instalar paquetes, unirse a un dominio o inicializar el almacenamiento. No es necesario que haga que estos scripts sean idempotentes. |
|
Ejecute el script en el primer arranque y en cada reinicio. |
Configuración que se debe volver a aplicar después de un reinicio, como volver a montar un sistema de archivos efímero o reafirmar el estado de un nodo. |
Los scripts se configuran para FIRST_BOOT_ONLY ejecutarse una vez y se omiten al reiniciar. Los scripts están configurados para EVERY_BOOT ejecutarse en cada arranque y deben ser idempotentes (es seguro ejecutarse más de una vez con el mismo resultado).
Ubicaciones de almacenamiento de scripts
Puede almacenar los scripts en Amazon S3 o distribuirlos a través de HTTPS. Los scripts no se pueden cargar en línea a través de la API y cada script no debe superar los 2 MiB; el agente rechaza cualquier script que supere este tamaño.
-
Amazon S3 (
s3://): el perfil de IAM de la instancia debe estarbucket/keys3:GetObjecten el objeto. Con un punto final de la VPC de la puerta de enlace S3, los nodos de las subredes privadas pueden recuperar los scripts a través del punto de enlace de la VPC. Fije una versión específica conscriptSource.s3VersionId(solo ubicaciones de S3). -
HTTPS (
https://): el host debe ser de lectura pública (sin autenticación) y el nodo necesita acceso a Internet saliente (puerta de enlace de Internet, puerta de enlace NAT o proxy HTTP). Esto es útil para los scripts alojados en repositorios públicos GitHub o en otros repositorios públicos.hostname/path
El almacenamiento externo proporciona control de versiones, capacidad de auditoría y reutilización en todos los equipos. No se admiten los scripts cargados o en línea.
Pasar argumentos a los guiones
Pase los argumentos como una matriz ordenada. Llegan al script como parámetros posicionales de la línea de comandos.
arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)
El agente exporta las variables de entorno a cada script. Estas variables contienen metadatos de clústeres y nodos.
Variable |
Descripción |
|---|---|
|
Identificador/nombre del clúster |
|
Nombre o identificador del grupo de nodos de cómputos |
|
Identificador de nodos |
|
|
#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"
Gestión de errores
Cada script tiene un onError campo que controla lo que ocurre cuando un script sale de un valor distinto de cero o es cancelado por una señal.
Valor |
Comportamiento |
Cuándo se debe usar |
|---|---|---|
|
Marque el nodo como fallido y termínelo. |
Configuración crítica (montajes de almacenamiento, unión a Active Directory). Impide pagar por nodos rotos. |
|
Detiene los scripts restantes en la fase y deja el nodo en ejecución. |
Depuración: inspeccione la instancia después de un error. |
|
Registra el error y ejecuta el siguiente script. |
Tareas opcionales o de máximo esfuerzo. |
Un script produce un error si su salida es distinta de cero o si una señal lo interrumpe (por ejemplo,). SIGSEGV Los scripts no se vuelven a intentar. Si una operación puede experimentar errores transitorios, añada la lógica de reintentos en el script. Sin embargo, se vuelve a intentar recuperar (descargar) el script (hasta 3 intentos con un retraso exponencial (aproximadamente 17 segundos como máximo)) antes de que se aplique el comportamiento. onError
Almacenamiento en caché y actualizaciones de scripts
El agente descarga cada script en la instancia en el primer arranque y lo almacena localmente. Hay dos campos que controlan el comportamiento al reiniciar: scriptCachingPolicy controlan la redescarga y executionPolicy controlan la reejecución.
-
CACHE_ONCE(predeterminado): se descarga una vez en el primer arranque; no se recupera nunca. El comportamiento es idéntico en todos los reinicios. La actualización del contenido del script requiere la sustitución de la instancia. -
REFRESH_ON_REBOOT— Re-download en cada reinicio, sobrescribe la caché. Esto le permite enviar correcciones de scripts mediante un reinicio. Requiere acceso a la red en cada arranque; si se produce un error en la actualización, la descarga se considera un error de recuperación y se aplica elonErrorcomportamiento del script (no hay alternativa a la copia en caché). De hecho, un script actualizado solo se vuelve a ejecutar al reiniciarse si es así.executionPolicyEVERY_BOOT
La configuración del ciclo de vida (qué scripts se ejecutan, sus argumentos, el manejo de errores y la política de ejecución) siempre es inmutable por instancia. Cambiarla solo UpdateComputeNodeGroup afecta a las instancias nuevas y desencadena la DRAIN estrategia, de modo que los trabajos en ejecución finalizan antes de que se reemplacen los nodos.
Integridad del script (sumas de comprobación)
Si lo desea, SHA-256 checksum introduzca una en un scriptscriptSource, como una cadena hexadecimal de 64 caracteres. El agente lo valida al descargarlo; si no coincide, se considera un error de descarga y se desencadena. onError Se recomienda utilizar una suma de comprobación para la producción, especialmente para los guiones de fuentes compartidas o externas.
sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value
Registro y depuración
Cada script escribe en su propio archivo de registro y el agente mantiene su propio 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
El nombre del archivo de registro usa el nombre del script tal como lo definió. Los espacios se conservan. Por ejemplo, un script llamado Mount EFS home directory escribe enMount EFS home
directory.log. Conéctese a SSH o al administrador de sesiones de AWS Systems Manager para leerlos; ambos están disponibles por nodeBootstrapped etapas. Como los nodos que fallan TERMINATE son reemplazados, reenvía los registros fuera de la instancia para depurarlos una vez finalizados: añade un script de arranque del nodo que configure el CloudWatch agente de Amazon para enviar el directorio de registros del ciclo de vida a Amazon Logs. CloudWatch Esto AWS es lo que hace el script mantenido. configure-cloudwatch-logs.sh Para obtener más información, consulte Uso AWS-scripts mantenidos para las acciones del ciclo de vida de los nodos en AWS PC.