Puede configurar los hooks del ciclo de vida PostStart y PreStop en la consola de Enterprise Distributed Application Service (EDAS). De este modo, puede agregar código para ejecutar operaciones personalizadas inmediatamente después de que se inicia una aplicación o antes de que esta deje de ejecutarse. También puede configurar las probes Liveness y Readiness en la consola de EDAS para comprobar el estado y la disponibilidad de los contenedores. Este tema describe cómo configurar los hooks del ciclo de vida de las aplicaciones y las probes Liveness y Readiness de los contenedores.
Contexto
En la mayoría de los casos, es necesario ejecutar operaciones específicas justo antes o después de que una aplicación se inicie o se detenga. Por ejemplo, podría necesitar desplegar recursos antes de iniciar una aplicación, o bien cerrar correctamente una aplicación o notificar a otros servicios o aplicaciones antes de que esta se detenga. EDAS integra la función de hooks del ciclo de vida de Kubernetes para permitirle configurar los hooks del ciclo de vida PostStart y PreStop para los contenedores.
Al desplegar una aplicación en un clúster de Kubernetes, debe comprobar si los pods están activos y listos para proporcionar servicios. EDAS integra la función de probes de pod de Kubernetes. Esta función le permite configurar la probe Liveness para determinar cuándo reiniciar los contenedores y configurar la probe Readiness para comprobar si los contenedores están listos para recibir tráfico.
Configurar hooks y probes del ciclo de vida de la aplicación al crear una aplicación
Inicie sesión en la consola de EDASconsola de EDAS. En el panel de navegación izquierdo, elija . Aparecerá la página Applications. En la barra de navegación superior, seleccione una región. En la parte superior de la página, seleccione un namespace. En la esquina superior izquierda, haga clic en Create Application.
-
En el paso Basic Information, especifique Cluster Type y Application Runtime Environment, y haga clic en Next. La siguiente tabla describe los parámetros.
Parámetro
Descripción
Cluster Type
El tipo de clúster en el que desea desplegar la aplicación. Seleccione Kubernetes Clusters.
Application Runtime Environment
El entorno de ejecución de la aplicación. Seleccione un entorno de ejecución según el tipo de aplicación alojada.
-
Java
-
Custom: Seleccione esta opción si desea usar una imagen personalizada para desplegar la aplicación en un clúster de Kubernetes.
-
Java: Seleccione esta opción si desea usar un paquete JAR universal para desplegar la aplicación como una aplicación Dubbo o Spring Boot. Puede establecer el parámetro Java Environment después de seleccionar esta opción.
-
Tomcat: Seleccione esta opción si desea usar un paquete WAR universal para desplegar la aplicación como una aplicación Dubbo o Spring. Puede establecer los parámetros Java Environment y Container Version después de seleccionar esta opción.
-
EDAS-Container (HSF): Seleccione esta opción si desea usar un paquete WAR o FatJar para desplegar la aplicación como una aplicación High-speed Service Framework (HSF). Puede establecer los parámetros Java Environment, Pandora Version y Ali-Tomcat Version después de seleccionar esta opción.
-
-
PHP: Seleccione esta opción si la aplicación es una aplicación PHP que se ejecuta en Apache HTTP Server.
-
Node.js, C++, Go, and Other Languages: Seleccione esta opción si desea usar una imagen personalizada para desplegar la aplicación en un clúster de Kubernetes. El proceso de configuración para aplicaciones multilenguaje no se describe en este tema.
-
En el paso Configurations, configure la información del entorno, la información básica y el método de despliegue de la aplicación, establezca los parámetros de recursos relacionados y luego haga clic en Next.
-
En el paso Advanced Settings, expanda la sección Application Life Cycle Management y configure los siguientes parámetros.
Parámetro
Descripción
PostStart
Especifique un hook de contenedor PostStart. El hook se activa inmediatamente después de crear un contenedor. El hook notifica a Kubernetes que se ha creado el contenedor. No es necesario pasar parámetros al controlador del hook correspondiente. Si falla la ejecución del controlador del hook, el sistema detiene el contenedor y determina si debe reiniciarlo según la política de reinicio del contenedor. Para obtener más información, consulte Container Lifecycle Hooks.
PreStop
Especifique un hook de contenedor PreStop. El hook se activa antes de eliminar un contenedor. El controlador del hook correspondiente debe ejecutarse antes de enviar la solicitud de eliminación del contenedor al daemon de Docker. El daemon de Docker se envía a sí mismo una señal SIGTERM para eliminar el contenedor, independientemente del resultado de ejecución del controlador del hook. Para obtener más información, consulte Container Lifecycle Hooks.
TerminationGracePeriod configuration
Especifique el periodo de tiempo de espera permitido para el cierre correcto de un pod. Asegúrese de que el hook PreStop finalice y la aplicación procese la señal SIGTERM dentro del periodo de tiempo de espera. También puede ajustar el periodo de tiempo de espera para controlar la duración del proceso de eliminación de un pod.
Liveness
Especifique una probe Liveness. La probe supervisa el estado del contenedor y comprueba si la aplicación está sana. Si la aplicación no está sana, el contenedor se elimina y se vuelve a crear. Para obtener más información, consulte Pod Lifecycle.
Readiness
Especifique una probe Readiness. La probe supervisa el estado del contenedor y comprueba si la aplicación se ha iniciado y puede ejecutarse según lo previsto. Si la aplicación no puede ejecutarse según lo previsto, se actualiza el estado del contenedor. Para obtener más información, consulte Pod Lifecycle.
Haga clic en Create Application.
-
En la página Creation Completed, revise la información en las secciones Basic Information, Configurations y Advanced Settings. Luego, haga clic en Create Application.
En la parte superior de la página Application Overview, haga clic en View Details. En la página Change List, consulte el proceso de cambio de la aplicación. Espere varios minutos hasta que se despliegue la aplicación. Una vez completado el proceso de cambio de la aplicación, consulte el estado de la instancia en la sección Basic Information de la página Application Overview. Si el estado indica que un pod se está ejecutando, la aplicación se ha desplegado correctamente.
Configurar hooks y probes del ciclo de vida de la aplicación al actualizar una aplicación
Puede configurar los hooks y probes del ciclo de vida de la aplicación al crearla, o bien configurar o actualizar los hooks y probes al desplegar una aplicación.
Inicie sesión en la consola de EDAS consola de EDAS.
En el panel de navegación izquierdo, haga clic en . En la barra de navegación superior, seleccione una región. En la parte superior de la página, seleccione un namespace. Seleccione Container Service or Serverless Kubernetes Cluster en la lista desplegable Cluster Type. A continuación, busque la aplicación que desea desplegar y haga clic en su nombre.
En la página Overview o Basic information, elija en la esquina superior derecha.
En la página Select Deployment Mode, seleccione un modo de despliegue y haga clic en Start Deployment en la esquina superior derecha de la sección del modo de despliegue especificado.
-
Configure los parámetros del entorno y del paquete de despliegue de la aplicación, y expanda la sección Application Life Cycle Management. En dicha sección, configure los parámetros según sus requisitos empresariales. Luego, haga clic en OK.
Parámetro
Descripción
PostStart
Especifique un hook de contenedor PostStart. El hook se activa inmediatamente después de crear un contenedor. El hook notifica a Kubernetes que se ha creado el contenedor. No es necesario pasar parámetros al controlador del hook correspondiente. Si falla la ejecución del controlador del hook, el sistema detiene el contenedor y determina si debe reiniciarlo según la política de reinicio del contenedor. Para obtener más información, consulte Container Lifecycle Hooks.
PreStop
Especifique un hook de contenedor PreStop. El hook se activa antes de eliminar un contenedor. El controlador del hook correspondiente debe ejecutarse antes de enviar la solicitud de eliminación del contenedor al daemon de Docker. El daemon de Docker se envía a sí mismo una señal SIGTERM para eliminar el contenedor, independientemente del resultado de ejecución del controlador del hook. Para obtener más información, consulte Container Lifecycle Hooks.
TerminationGracePeriod configuration
Especifique el periodo de tiempo de espera permitido para el cierre correcto de un pod. Asegúrese de que el hook PreStop finalice y la aplicación procese la señal SIGTERM dentro del periodo de tiempo de espera. También puede ajustar el periodo de tiempo de espera para controlar la duración del proceso de eliminación de un pod.
Liveness
Especifique una probe Liveness. La probe supervisa el estado del contenedor y comprueba si la aplicación está sana. Si la aplicación no está sana, el contenedor se elimina y se vuelve a crear. Para obtener más información, consulte Pod Lifecycle.
Readiness
Especifique una probe Readiness. La probe supervisa el estado del contenedor y comprueba si la aplicación se ha iniciado y puede ejecutarse según lo previsto. Si la aplicación no puede ejecutarse según lo previsto, se actualiza el estado del contenedor. Para obtener más información, consulte Pod Lifecycle.
ImportanteDespués de hacer clic en OK, la aplicación se reinicia. Se recomienda realizar esta operación fuera de las horas pico.
Configurar la gestión del ciclo de vida de la aplicación
Configurar los hooks PostStart y PreStop
Puede configurar el hook PostStart de la misma manera que configura el hook PreStop. Puede configurar los hooks en los siguientes modos.
Modo | Descripción |
Exec | Ejecuta un comando específico en un contenedor. Si se devuelve 0 tras la ejecución del comando, significa que este se ejecutó sin errores. |
HttpGet | Envía una solicitud HTTP GET a un endpoint específico del contenedor. Si se devuelve un código de estado mayor o igual a 200 pero menor que 400, la solicitud se considera exitosa. En el modo HttpGet, puede configurar los siguientes parámetros:
|
Los siguientes ejemplos muestran cómo configurar el hook PostStart en los modos Exec y HttpGet en EDAS:
-
Exec mode
Por ejemplo, si desea ejecutar el siguiente comando después de crear un contenedor:
echo "container started"Puede configurar el hook PostStart en modo Exec mediante uno de los siguientes métodos en EDAS:
-
Método 1: Divida el comando en diferentes parámetros. Utilice este método si el comando es corto y contiene pocos parámetros.

-
Método 2: Inicie una shell y ejecute el comando en ella. Utilice este método si el comando es largo y contiene muchos parámetros.

-
-
HttpGet mode
La siguiente figura muestra cómo configurar el hook PostStart en modo HttpGet. Después de iniciar el contenedor, se envía una solicitud HTTP GET a
http://example.com:8080/healthz.
NotaSi falla la ejecución del hook PostStart o PreStop, el contenedor se reinicia automáticamente. Puede consultar la información sobre el error de ejecución del hook PostStart o PreStop en los registros de cambios de la aplicación.
Configurar las probes Liveness y Readiness
EDAS admite los siguientes tipos de probes de contenedor de Kubernetes.
|
Probe de contenedor |
Descripción |
|
LivenessProbe |
Comprueba si un contenedor está activo. Si la comprobación falla, Kubernetes finaliza automáticamente el contenedor y lo reinicia según la política de reinicio. |
|
ReadinessProbe |
Comprueba si un contenedor está listo para recibir tráfico. Si la comprobación es exitosa, Kubernetes agrega el pod a la lista de servicios a la que pertenece para que comience a recibir tráfico. |
Puede configurar las probes Liveness y Readiness en uno de los siguientes modos.
|
Modo |
Descripción |
|
Exec |
Ejecuta un comando específico en un contenedor. Si se devuelve 0 tras la ejecución del comando, la comprobación se considera exitosa. |
|
HttpGet |
Envía una solicitud HTTP GET a un endpoint específico del contenedor. Si se devuelve un código de estado mayor o igual a 200 pero menor que 400, la comprobación se considera exitosa. |
|
TcpSocket |
Comprueba si el puerto TCP especificado correspondiente a la dirección IP del contenedor está habilitado. Si el puerto está habilitado, la comprobación se considera exitosa. |
En los modos anteriores, puede configurar los siguientes parámetros para la probe Liveness o Readiness.
|
Parámetro |
Descripción |
|
InitialDelaySeconds |
El retraso desde el inicio del contenedor hasta la primera comprobación de la probe. Unidad: segundos. Valores válidos: de 1 a 1000. |
|
PeriodSeconds |
El intervalo entre dos comprobaciones consecutivas. Unidad: segundos. Valores válidos: de 1 a 1000. |
|
SuccessThreshold |
El número de comprobaciones exitosas consecutivas que deben ocurrir tras una comprobación fallida antes de declarar la comprobación como exitosa. Valores válidos: de 1 a 1000. Valor válido para la probe Liveness: 1. |
|
TimeoutSeconds |
El periodo de tiempo de espera de una comprobación. Unidad: segundos. Valores válidos: de 1 a 1000. |
|
FailureThreshold |
El número de comprobaciones fallidas consecutivas que deben ocurrir tras una comprobación exitosa antes de declarar la comprobación como fallida. Valores válidos: de 1 a 1000. |
La siguiente figura muestra un ejemplo de configuración de la probe Liveness en modo TcpSocket. En este ejemplo, el parámetro Host se deja vacío. Por lo tanto, se utiliza la dirección IP del pod como dirección del host. La comprobación se realiza mediante el puerto 18081. La primera comprobación comienza 60 segundos después de iniciar el contenedor. El sistema realiza comprobaciones a intervalos de 10 segundos. Si una de las comprobaciones es exitosa, se considera que el pod está activo. El periodo de tiempo de espera de cada comprobación es de cinco segundos. Si tres comprobaciones consecutivas fallan, Kubernetes finaliza el contenedor y lo reinicia según la política de reinicio.

Verificar el resultado
Después de configurar un hook del ciclo de vida de la aplicación, puede seguir estos pasos para verificar la configuración.
Por ejemplo, si configuró el script Hello from the postStart handler antes de iniciar una aplicación. Una vez desplegada la aplicación, ejecute el siguiente comando en su web shell:
cat /usr/share/message
Compruebe si el script Hello from the postStart handler existe en su archivo. Si el script existe, la configuración es válida.

Grupo de DingTalk para clústeres ACK y Serverless Kubernetes
Si tiene preguntas o sugerencias sobre el uso de Container Service for Kubernetes (ACK) y clústeres Serverless Kubernetes en EDAS, puede unirse al grupo de DingTalk buscando el ID 23197114 en DingTalk.