设置应用生命周期管理

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如果您精通K8s,且需要在应用容器启动前或者关闭前执行相关操作,例如运行前部署资源或者停止前优雅下线应用,可以设置应用生命周期管理。

背景信息

您可以在SAE上对应用进行以下配置。

  • 启动后处理(PostStart设置):应用容器创建成功后,运行前的任务,例如资源部署、环境准备等。

  • 停止前处理(PreStop设置):应用容器被终止前的任务,例如优雅关闭应用程序、通知其他系统等。

  • 优雅下线超时设置(TerminationGracePeriodSeconds):应用实例停止前,等待的时间,超时后SAE将强制停止实例。

操作步骤

在创建应用过程中配置应用生命周期管理

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > 微服务应用,在顶部菜单栏选择目标地域,然后在应用列表页面单击创建应用

  3. 应用基本信息配置向导,设置应用相关信息,并单击下一步:高级设置

  4. 展开应用生命周期管理设置面板,按需配置信息。

    说明

    命令行脚本:首行为命令,次行为参数,多条参数以换行分割,避免出现空行。

    • 配置启动后处理(PostStart设置)

      命令行脚本区域输入自定义的PostStart命令。

      image

    • 配置停止前处理(PreStop设置)

      命令行脚本区域输入自定义的PreStop命令。

      image

    • 配置优雅下线超时设置(TerminationGracePeriodSeconds)

      优雅下线超时时间区域输入超时时间,最大支持5分钟。

      sc_termination_grace_period_seconds_300s

    说明
    • Poststart设置:一种容器钩子。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的hook handler传入任何参数。如果该钩子对应的hook handler执行失败,则该容器会被关闭,并根据该容器的重启策略决定是否重启该容器。更多信息,请参见Container Lifecycle Hooks

    • PreStop设置:一种容器钩子。该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送SGTERN信号量给Docker daemon删除该容器。更多信息,请参见Container Lifecycle Hooks

  5. 单击创建应用

  6. 验证结果。

    例如应用启动前,需要将Hello from the postStart handler内容写入文件。

    PostStart配置如下:

    /bin/sh
    -c
    echo "Hello from the postStart handler" > /usr/share/message

    应用部署后,使用Webshell查看文件中是否存在Hello from the postStart handler。如果存在,表示配置成功。

    结果验证成功示例图

在部署应用过程中配置应用生命周期管理

警告

重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

更新应用配置的路径因实例数的不同而不同。本文以实例数大于等于1为例,介绍如何配置目标功能。当实例数等于0时的操作路径,请参见更新应用

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > 微服务应用,然后在顶部菜单栏选择目标地域。

  3. 应用列表页面,选择目标命名空间,然后单击目标应用名称。

  4. 基本信息页面右上角,单击部署应用

  5. 展开应用生命周期管理设置面板,按需配置信息。

    说明

    命令行脚本:首行为命令,次行为参数,多条参数以换行分割,避免出现空行。

    • 配置启动后处理(PostStart设置)

      命令行脚本区域输入自定义的PostStart命令。

      image

    • 配置停止前处理(PreStop设置)

      命令行脚本区域输入自定义的PreStop命令。

      image

    • 配置优雅下线超时设置(TerminationGracePeriodSeconds)

      优雅下线超时时间区域输入超时时间,最大支持5分钟。

      sc_termination_grace_period_seconds_300s

    说明
    • Poststart设置:一种容器钩子。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的hook handler传入任何参数。如果该钩子对应的hook handler执行失败,则该容器会被关闭,并根据该容器的重启策略决定是否重启该容器。更多信息,请参见Container Lifecycle Hooks

    • PreStop设置:一种容器钩子。该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送SGTERN信号量给Docker daemon删除该容器。更多信息,请参见Container Lifecycle Hooks

  6. 配置完成后,单击确认

  7. 验证结果。

    例如应用启动前,需要将Hello from the postStart handler内容写入文件。

    PostStart配置如下:

    /bin/sh
    -c
    echo "Hello from the postStart handler" > /usr/share/message

    应用部署后,使用Webshell查看文件中是否存在Hello from the postStart handler。如果存在,表示配置成功。

    结果验证成功示例图