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

背景信息

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

  • 启动后处理(PostStart设置):应用容器创建成功后,运行前的任务,例如资源部署、环境准备等。
  • 停止前处理(PreStop设置):应用容器被终止前的任务,例如优雅关闭应用程序、通知其他系统等。
  • 优雅下线超时设置(TerminationGracePeriodSeconds):应用实例停止前,等待的时间,超时后SAE将强制停止实例。

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

  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击创建应用
  3. 应用基本信息页签设置应用相关信息,并单击下一步:应用部署配置
  4. 应用部署配置页签,选择技术栈语言应用部署方式,设置部署参数。
  5. 应用部署配置页面,展开应用生命周期管理设置面板,根据需要配置信息。
    注意 命令行脚本:首行为命令,次行为参数,多条参数以换行分割,避免出现空行。
    • 配置启动后处理(PostStart设置)

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

      PostStart配置示例图
    • 配置停止前处理(PreStop设置)

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

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

      优雅下线超时时间区域输入超时时间,最大支持60秒。

      优雅下线超时时间
    说明
    • 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. 确认规格页签,查看您所创建应用的详细信息以及配置费用情况,并单击确认创建
  8. 结果验证。

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

    PostStart配置如下:poststart配置示例

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

    结果验证成功示例图

应用部署后配置应用生命周期管理

  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 在应用详情页面的右上角,单击部署应用
  4. 部署应用页面下方,根据您的需求配置应用信息,并在配置完成后单击确认
    注意 单击确认后,该应用将会被重启,请在业务较少的时间段进行。
  5. 部署应用页面,展开应用生命周期管理设置面板,根据需要配置信息。
    注意 命令行脚本:首行为命令,次行为参数,多条参数以换行分割,避免出现空行。
    • 配置启动后处理(PostStart设置)

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

      PostStart配置示例图
    • 配置停止前处理(PreStop设置)

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

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

      优雅下线超时时间区域输入超时时间,最大支持60秒。

      优雅下线超时时间
    说明
    • 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配置如下:poststart配置示例

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

    结果验证成功示例图

问题反馈

如果您在使用SAE过程中有任何疑问,欢迎您扫描下面的二维码或搜索钉钉群号23198618,加入钉钉群与我们交流。SAE钉钉群2