View a markdown version of this page

Configure las acciones del ciclo de vida del nodo en AWS PC - AWS PIEZAS

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.

Consola de administración de AWS
Para añadir acciones del ciclo de vida mediante la consola
  1. Abra la consola AWS PCS.

  2. Abre la página de creación o actualización de un grupo de nodos de procesamiento.

  3. En la sección Acciones del ciclo de vida del nodo, elige Agregar script.

  4. Seleccione la fuente del script:

    1. Agregar desde la biblioteca de scripts de AWS PCS: haga referencia a un script AWS mantenido. Para obtener más información, consulte Uso AWS-scripts mantenidos para las acciones del ciclo de vida de los nodos en AWS PC.

    2. Agregar mediante S3: haga referencia a un script por su URI de Amazon S3.

    3. Agregar mediante HTTPS: haga referencia a un script por su URL HTTPS.

  5. Seleccione la etapa del nodo.

  6. Para un script que añada mediante S3 o HTTPS, especifique esta configuración:

    1. Ubicación del script: introduzca el URI S3 o la URL HTTPS del script.

    2. Nombre: introduzca un nombre para el script.

    3. (Opcional) Suma de comprobación: introduzca una SHA-256 suma de comprobación para verificar la integridad del script. Para obtener más información, consulte Integridad del script (sumas de comprobación).

    4. (Opcional) En el caso de un script que añada mediante S3, introduzca una versión para hacer referencia a una versión específica del objeto.

  7. Para todas las fuentes de scripts, especifique esta configuración:

    1. Comportamiento de gestión de errores: seleccione TERMINATESTOP_SEQUENCE, oCONTINUE.

    2. Política de ejecución: seleccione FIRST_BOOT_ONLY oEVERY_BOOT.

    3. Argumentos (opcional): añada argumentos para pasarlos al script.

  8. Para agregar más guiones, repita estos pasos.

  9. Los guiones se ejecutan de arriba a abajo dentro de una etapa. Para cambiar el orden de ejecución, seleccione Acciones para un script y, a continuación, elija Subir o Bajar.

  10. Para la política de almacenamiento en caché, seleccione CACHE_ONCE oREFRESH_ON_REBOOT. La política de almacenamiento en caché se aplica a todos los scripts. Para obtener más información, consulte Almacenamiento en caché y actualizaciones de scripts.

AWS CLI

Utilice el --node-lifecycle-actions parámetro con el update-compute-node-group comando create-compute-node-group or. Para ver la estructura de los parámetros, consulte NodeLifecycleActionsRequest la referencia de la API de AWS PCS. Para ver ejemplos de comandos, consulteEjemplos de acciones del ciclo de vida de un nodo para AWS PC.

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

FIRST_BOOT_ONLY (predeterminado)

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.

EVERY_BOOT

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://bucket/key): el perfil de IAM de la instancia debe estar s3:GetObject en 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 con scriptSource.s3VersionId (solo ubicaciones de S3).

  • HTTPS (https://hostname/path): 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.

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

PCS_CLUSTER_ID / PCS_CLUSTER_NAME

Identificador/nombre del clúster

PCS_COMPUTE_NODE_GROUP_ID / PCS_COMPUTE_NODE_GROUP_NAME

Nombre o identificador del grupo de nodos de cómputos

PCS_NODE_ID

Identificador de nodos

PCS_IS_FIRST_BOOT

1en el primer arranque del nodo, 0 en cada reinicio posterior. Se usa para bifurcar el comportamiento en EVERY_BOOT los scripts.

#!/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

TERMINATE (predeterminado)

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.

STOP_SEQUENCE

Detiene los scripts restantes en la fase y deja el nodo en ejecución.

Depuración: inspeccione la instancia después de un error.

CONTINUE

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 el onError comportamiento 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í. executionPolicy EVERY_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.