Todos os produtos
Search
Central de documentação

Serverless App Engine:Configure application lifecycle management

Última atualização: Jun 28, 2026

Se você tem familiaridade com Kubernetes e precisa executar ações específicas antes que os contêineres da sua aplicação iniciem ou parem, como implantar recursos ou realizar um desligamento graceful, configure o gerenciamento do ciclo de vida da aplicação. Este tópico descreve como configurar PostStart, PreStop e TerminationGracePeriodSeconds para suas aplicações no Serverless App Engine (SAE).

Visão geral

  • Um pod hook (ou container hook), gerenciado pelo componente kubelet do Kubernetes, executa tarefas personalizadas em etapas fundamentais do ciclo de vida de um contêiner. Essas etapas incluem o momento anterior ao início do processo do contêiner (PostStart) e o momento anterior ao seu encerramento (PreStop). Os hooks permitem que o Kubernetes gerencie o ciclo de vida do contêiner com mais flexibilidade e precisão. Para obter mais informações, consulte Container Lifecycle Hooks.

    • PostStart: Hook de ciclo de vida executado imediatamente após a criação de um contêiner para notificá-lo sobre esse evento. Nenhum parâmetro é passado ao handler do hook. Se o handler falhar, o contêiner será encerrado e reiniciado conforme sua política de reinicialização.

    • PreStop: Hook de ciclo de vida acionado antes do encerramento de um contêiner, geralmente usado para executar tarefas de limpeza ou realizar um desligamento graceful. O handler do hook deve concluir sua execução antes que o Kubernetes envie um sinal de encerramento (como SIGTERM) ao contêiner. Independentemente do resultado do handler, assim que ele for concluído, o Kubernetes envia o sinal SIGTERM e aguarda um período especificado antes de encerrar o contêiner à força.

  • TerminationGracePeriodSeconds: Esta configuração define o período de carência para o encerramento de um contêiner, permitindo que ele conclua as operações de limpeza e desligamento antes de ser parado à força. Isso melhora a estabilidade ao evitar problemas como perda de dados, falhas em requisições e indisponibilidade de serviço causados por encerramentos abruptos. Quando combinado com um hook PreStop, possibilita um processo completo de desligamento graceful.

Pontos de entrada

O ponto de entrada varia conforme o cenário:

Crie uma aplicação

  1. Faça logon no console do SAE. No painel de navegação à esquerda, escolha . Selecione uma região e um namespace e clique em Create Application.

  2. Na página do assistente Basic Information, configure os parâmetros necessários e clique em Next: Advanced Settings.

  3. Na página Advanced Settings, localize e expanda a seção Application Lifecycle Management.

Modifique uma aplicação em execução

Aviso

A reimplantação de uma aplicação a reinicia. Para evitar interrupções no serviço, realize as implantações fora dos horários de pico.

  1. Faça logon no console do SAE. No painel de navegação à esquerda, escolha . Selecione a região e o namespace e clique no nome da sua aplicação.

  2. Na página Basic Information da aplicação, clique em Deploy Application.

  3. Na página Deploy Application, localize e expanda a seção Application Lifecycle Management.

Modifique uma aplicação parada

  1. Faça logon no console do SAE. No painel de navegação à esquerda, escolha . Selecione a região e o namespace e clique no nome da sua aplicação.

  2. Na página Basic Information da aplicação, clique em Modify Application Configurations.

  3. Na página Modify Application Configurations, localize e expanda a seção Application Lifecycle Management.

Procedimento

Na seção Application Lifecycle Management, configure PostStart, PreStop e TerminationGracePeriodSeconds conforme necessário.

Recomendamos configurar todas as três definições para estabelecer um ciclo completo de gerenciamento do ciclo de vida dos seus contêineres, garantindo inicialização e desligamento suaves dos serviços, liberação ordenada de recursos e operações sem tempo de inatividade.

PostStart

Na seção Application Lifecycle Management, configure o hook PostStart na aba PostStart.

Nota

O SAE fornece dois interpretadores de shell:

  • >_ /bin/sh

  • >_ /bin/bash

Por exemplo, antes que a aplicação inicie, grave o conteúdo Hello from the postStart handler no arquivo /usr/share/message.

Selecione >_/bin/sh e insira o seguinte comando no editor de código: echo "Hello from the postStart handler" > /usr/share/message.

Em um ambiente de produção, configure as definições com base nos requisitos do seu negócio. O exemplo fornecido neste tópico serve apenas para verificação mínima e não deve ser usado em ambiente de produção.

Verifique o resultado:

Após criar ou reimplantar a aplicação, use o Webshell para abrir o terminal da instância e verifique se o arquivo /usr/share/message existe e contém o conteúdo esperado.

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

PreStop

Na seção Application Lifecycle Management, configure o hook PreStop na aba PreStop.

Nota

O SAE fornece dois interpretadores de shell:

  • >_ /bin/sh

  • >_ /bin/bash

Por exemplo, antes que o contêiner seja encerrado, execute um script para gravar Perform cleanup no arquivo /cleanup.log e aguarde 100 segundos para verificação.

Em um ambiente de produção, configure as definições com base nos requisitos do seu negócio. O exemplo fornecido neste tópico serve apenas para verificação mínima e não deve ser usado em ambiente de produção.

Selecione >_/bin/sh e insira o seguinte comando no editor de código: echo "Perform cleanup" > /cleanup.log && sleep 100.

Verifique o resultado:

Na página Basic Information da aplicação, clique em Stop Application. Em seguida, use o Webshell para abrir o terminal da instância e verifique se o arquivo /cleanup.log existe e contém o conteúdo esperado.

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

TerminationGracePeriodSeconds

Na seção Application Lifecycle Management, na aba TerminationGracePeriodSeconds, defina o tempo limite de desligamento graceful como 60 segundos.

Se o tempo limite de desligamento graceful for menor que o tempo necessário para o contêiner encerrar de forma graceful, o contêiner será terminado à força (Signal: SIGKILL, exit code: 137). Esse tempo necessário inclui tanto a execução do hook PreStop quanto o tratamento do sinal SIGTERM pelo contêiner. Por exemplo, se o contêiner precisar de 100 segundos para encerrar de forma graceful, mas o tempo limite estiver definido como 60 segundos, o contêiner será eliminado antes que seu encerramento graceful possa ser concluído.

Verifique o resultado:

Neste exemplo, o tempo limite de desligamento graceful é intencionalmente definido como menor que o tempo de desligamento graceful do contêiner para fins de verificação.

Na página Basic Information da aplicação, clique em Stop Application. Em seguida, use o Webshell para abrir o terminal da instância e verifique se o contêiner reporta o código de saída 137.

Durante o desligamento graceful, o contêiner permanece no estado Terminating até que o tempo limite configurado expire.
[/]${"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"}]}}