在EDAS控制台可以配置PostStart和PreStop的生命周期钩子,使您在应用启动后和停止前都可以添加代码来自定义一些操作动作。同时在EDAS控制台可以配置Liveness和Readiness探针,来探测容器的存活性和可读性。本文将展示如何配置应用的生命周期钩子,以及如何配置容器的存活探针和可读性探针。

背景信息

通常应用运行前后和停止前后都会有一些操作,例如运行前部署资源、停止前优雅下线应用或通知其他服务或应用。EDAS依托于K8s完美集成了配置生命周期钩子的功能,支持为容器的生命周期配置PostStart和PreStop钩子。

当您在K8s集群中部署应用的时候,需要读取Pod的存活状态和Pod是否准备好对外提供服务。EDAS依托于K8s完美集成了配置Pod探针的功能,支持配置Liveness探针来确定何时重启容器,以及配置Readiness探针来确定容器是否已经就绪可以接受流量。

在创建应用时配置应用生命周期的钩子和探针

  1. 登录EDAS控制台
  2. 在左侧导航栏中选择应用管理 > 应用列表,在应用列表页面左上角单击创建应用
  3. 应用基本信息页签选择集群类型和应用运行环境,然后在页面最下方单击下一步
    1. 集群类型区域选择Kubernetes集群
    2. 应用运行环境区域选择Java运行环境的任一环境或PHP
  4. 应用配置页签中设置应用的环境信息、基本信息、部署方式和资源参数,设置完成后单击下一步
  5. 应用高级设置页签展开应用生命周期管理,设置以下参数。
    参数 描述
    PostStart配置 一种容器钩子。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的Hook Handler传入任何参数。如果该钩子对应的Hook Handler执行失败,则该容器会终止运行,并根据该容器的重启策略决定是否要重启该容器。详情请参见Container Lifecycle Hooks
    PreStop配置 一种容器钩子。该钩子在容器被删除前触发,其所对应的Hook Handler必须在删除该容器的请求发送给Docker Daemon之前完成。在该钩子对应的Hook Handler完成后不论执行的结果如何,Docker Daemon会发送一个SGTERN信号给Docker Daemon来删除该容器。详情请参见Container Lifecycle Hooks
    Liveness配置 一种探测容器状态的探针,探测应用是否处于健康状态。如果不健康,则删除并重建容器。详情请参见Pod Lifecycle
    Readiness配置 一种探测容器状态的探针,探测应用是否启动完成并且处于正常服务状态。如果不正常,则更新容器的状态。详情请参见Pod Lifecycle
  6. 完成设置后单击创建应用
  7. 应用创建完成页签确认应用基本信息应用配置应用高级设置等信息,确认完毕后单击确定创建应用
    在应用基本信息页面顶部提示信息中单击查看详情,可在变更详情页面查看变更流程。应用部署需要几分钟,请您耐心等待。变更完成后在应用基本信息页面的实例部署信息页签查看实例的运行状态,如果运行状态为运行正常,说明应用部署成功。

在更新应用时配置应用生命周期钩子和探针

您除了在创建应用时可以配置应用生命周期钩子和探针,也可以在部署应用时配置或更新钩子和探针。

  1. 登录EDAS控制台
  2. 在左侧导航栏中选择应用管理 > 应用列表,在应用列表页面单击具体的应用名称。
  3. 应用总览基本信息页面的右上角选择部署 > 部署
  4. 选择部署模式页面选择具体的部署方式,然后在所选方式区域的右上角单击开始部署
  5. 设置应用的环境和部署包信息后展开应用生命周期管理,根据您的需求完成配置后单击确定
    注意 单击确定后,该应用将会被重启,请在业务较少的时间段进行。

结果验证

当配置了应用生命周期钩子后,可通过以下示例步骤验证配置结果。

例如在启动应用前,配置了Hello from the postStart handler的写入脚本。

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

EDAS容器服务K8s和Serverless K8s交流群

如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请提交工单,或使用钉钉扫描下面的二维码或搜索钉钉群号23197114加入钉钉群进行反馈。

EDAS K8s/Serverless K8s交流群