Todos los productos
Search
Centro de documentos

Serverless App Engine:Configurar la gestión del ciclo de vida de la aplicación

Última actualización: Sep 05, 2026

Si está familiarizado con Kubernetes y necesita ejecutar acciones específicas antes de que los contenedores de su aplicación se inicien o se detengan, como desplegar recursos o realizar un apagado controlado, configure la gestión del ciclo de vida de la aplicación. Este tema describe cómo configurar PostStart, PreStop y TerminationGracePeriodSeconds para sus aplicaciones de Serverless App Engine (SAE).

Descripción general

  • Un hook de pod (o hook de contenedor), gestionado por el componente kubelet de Kubernetes, ejecuta tareas personalizadas en etapas clave del ciclo de vida de un contenedor. Estas etapas incluyen el momento previo al inicio del proceso del contenedor (PostStart) y antes de su finalización (PreStop). Los hooks permiten a Kubernetes gestionar el ciclo de vida del contenedor con mayor flexibilidad y precisión. Para obtener más información, consulte Container Lifecycle Hooks.

    • PostStart: Hook del ciclo de vida que se ejecuta inmediatamente después de crear un contenedor para notificarle este evento. No se pasan parámetros al controlador del hook. Si el controlador falla, el contenedor se termina y se reinicia según su directiva de reinicio.

    • PreStop: Hook del ciclo de vida que se activa antes de terminar un contenedor; por lo general, se usa para ejecutar tareas de limpieza o realizar un apagado controlado. El controlador del hook debe completar su ejecución antes de que Kubernetes envíe una señal de terminación (como SIGTERM) al contenedor. Independientemente del resultado del controlador, una vez que este finaliza, Kubernetes envía la señal SIGTERM y espera durante un periodo especificado antes de forzar la terminación del contenedor.

  • TerminationGracePeriodSeconds: Esta configuración especifica el periodo de gracia para la terminación de un contenedor, lo que le permite completar las operaciones de limpieza y apagado antes de detenerse forzosamente. Esto mejora la estabilidad al evitar problemas como pérdida de datos, fallos en solicitudes e indisponibilidad del servicio causados por una terminación abrupta. Cuando se combina con un hook PreStop, habilita un proceso completo de apagado controlado.

Puntos de entrada

El punto de entrada varía según el escenario:

Crear aplicación

  1. Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, seleccione . Seleccione una región y un namespace, y luego haga clic en Create Application.

  2. En la página del asistente Basic Information, configure los parámetros obligatorios y haga clic en Next: Advanced Settings.

  3. En la página Advanced Settings, busque y expanda la sección Application Lifecycle Management.

Modificar una aplicación en ejecución

Aviso

Volver a desplegar una aplicación la reinicia. Para evitar interrupciones en el servicio, realice los despliegues fuera de las horas pico.

  1. Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, seleccione . Seleccione la región y el namespace, y luego haga clic en el nombre de su aplicación.

  2. En la página Basic Information de la aplicación, haga clic en Deploy Application.

  3. En la página Deploy Application, busque y expanda la sección Application Lifecycle Management.

Modificar una aplicación detenida

  1. Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, seleccione . Seleccione la región y el namespace, y luego haga clic en el nombre de su aplicación.

  2. En la página Basic Information de la aplicación, haga clic en Modify Application Configurations.

  3. En la página Modify Application Configurations, busque y expanda la sección Application Lifecycle Management.

Procedimiento

En la sección Application Lifecycle Management, configure PostStart, PreStop y TerminationGracePeriodSeconds según sea necesario.

Se recomienda configurar los tres ajustes para establecer un ciclo completo de gestión del ciclo de vida de sus contenedores. Esto garantiza un inicio y apagado fluidos del servicio, una liberación ordenada de recursos y operaciones sin tiempo de inactividad.

PostStart

En la sección Application Lifecycle Management, configure el hook PostStart en la pestaña PostStart.

Nota

SAE proporciona dos intérpretes de shell:

  • >_ /bin/sh

  • >_ /bin/bash

Por ejemplo, antes de que se inicie la aplicación, escriba el contenido Hello from the postStart handler en el archivo /usr/share/message.

Seleccione >_/bin/sh e introduzca el siguiente comando en el editor de código: echo "Hello from the postStart handler" > /usr/share/message.

En un entorno de producción, configure los ajustes según sus requisitos empresariales. El ejemplo proporcionado en este tema tiene únicamente fines de verificación mínima y no debe usarse en un entorno de producción.

Comprobar el resultado:

Después de crear o volver a desplegar la aplicación, use Webshell para abrir la terminal de la instancia y compruebe que el archivo /usr/share/message existe y contiene el contenido esperado.

[~]$cat /usr/share/message
Hello from the postStart handler
[~]$

PreStop

En la sección Application Lifecycle Management, configure el hook PreStop en la pestaña PreStop.

Nota

SAE proporciona dos intérpretes de shell:

  • >_ /bin/sh

  • >_ /bin/bash

Por ejemplo, antes de que termine el contenedor, ejecute un script para escribir Perform cleanup en el archivo /cleanup.log y luego espere 100 segundos para la verificación.

En un entorno de producción, configure los ajustes según sus requisitos empresariales. El ejemplo proporcionado en este tema tiene únicamente fines de verificación mínima y no debe usarse en un entorno de producción.

Seleccione >_/bin/sh e introduzca el siguiente comando en el editor de código: echo "Perform cleanup" > /cleanup.log && sleep 100.

Comprobar el resultado:

En la página Basic Information de la aplicación, haga clic en Stop Application. Luego, use Webshell para abrir la terminal de la instancia y compruebe que el archivo /cleanup.log existe y contiene el contenido esperado.

[/]$cat /cleanup.log
Perform cleanup
[/]$

TerminationGracePeriodSeconds

En la sección Application Lifecycle Management, en la pestaña TerminationGracePeriodSeconds, establezca el tiempo de espera de apagado controlado en 60 segundos.

Si el tiempo de espera de apagado controlado es menor que el tiempo necesario para que el contenedor termine de forma controlada, el contenedor se termina forzosamente (Signal: SIGKILL, exit code: 137). Este tiempo necesario incluye tanto la ejecución del hook PreStop como el manejo de la señal SIGTERM por parte del contenedor. Por ejemplo, si el contenedor requiere 100 segundos para terminar de forma controlada pero el tiempo de espera se establece en 60 segundos, el contenedor se elimina antes de que pueda completar su terminación controlada.

Comprobar el resultado:

En este ejemplo, el tiempo de espera de apagado controlado se establece intencionalmente en un valor menor al tiempo de apagado controlado del contenedor con fines de verificación.

En la página Basic Information de la aplicación, haga clic en Stop Application. Luego, use Webshell para abrir la terminal de la instancia y compruebe que el contenedor reporta el código de salida 137.

Durante el apagado controlado, el contenedor permanece en el estado Terminating hasta que expire el tiempo de espera configurado.
[/]${"metadata":{},"status":"Failure","message":"command terminated with non-zero exit code: error executing command [env COLUMNS=137 ROWS=46 LINES=46 /bin/sh -i -c /bin/bash || clear;/bin/sh], exit code 137","reason":"NonZeroExitCode","details":{"causes":[{"reason":"ExitCode","message":"137"}]}}