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

背景信息

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

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

操作步骤

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

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

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

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

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

      PreStop配置示例
    • 配置优雅下线超时设置(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. 确认规格配置向导页面,查看您所创建应用的详细信息以及配置费用情况,并单击确认创建
    页面会跳转至创建完成配置向导页面,您可以单击应用详情页进入基本信息页面。
  8. 验证结果。

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

    PostStart配置如下:poststart配置示例

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

    结果验证成功示例图

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

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

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

  1. 登录SAE控制台
  2. 在左侧导航栏,单击应用列表,在顶部菜单栏选择地域,然后单击具体应用名称。
  3. 基本信息页面右上角,单击部署应用
  4. 展开应用生命周期管理设置面板,按需配置信息。
    说明 命令行脚本:首行为命令,次行为参数,多条参数以换行分割,避免出现空行。
    • 配置启动后处理(PostStart设置)

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

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

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

      PreStop配置示例
    • 配置优雅下线超时设置(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配置如下:poststart配置示例

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

    结果验证成功示例图