You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Liveness与Readiness检查的HealthStatus自定义判定逻辑?

可以实现你所需的健康检查逻辑

你的需求完全可以实现,不管是通过自定义健康检查端点,还是利用容器编排平台(如Kubernetes)的内置健康检查机制,都能精准匹配你想要的规则,且你的状态映射逻辑没有对健康检查API的误解。

具体实现逻辑

  • Liveness检查(存活检查):
    按照你的要求,只要服务的HealthStatus不是Unhealthy(即处于Degraded或Healthy状态),就判定为存活。对应的判断规则是:

    • 当当前状态为Startable(映射Unhealthy)时,返回失败(触发重启)
    • 当当前状态为Starting/Stopping(映射Degraded)或Ready(映射Healthy)时,返回成功(判定存活)
  • Readiness检查(就绪检查):
    仅当服务的HealthStatus为Healthy(对应Ready状态)时,判定为就绪,允许接收流量。规则为:

    • 仅当前状态为Ready时返回成功
    • 其余所有状态(Startable/Starting/Stopping)均返回失败

示例代码(自定义HTTP端点)

以Python Flask为例,实现两个检查端点:

from flask import Flask

app = Flask(__name__)

# 模拟获取当前服务状态的方法
def get_current_service_state():
    # 实际场景中替换为真实状态获取逻辑
    return "Ready"

def map_state_to_health_status(state):
    state_map = {
        "Startable": "Unhealthy",
        "Starting": "Degraded",
        "Ready": "Healthy",
        "Stopping": "Degraded"
    }
    return state_map.get(state, "Unhealthy")

@app.get("/live")
def liveness_check():
    health_status = map_state_to_health_status(get_current_service_state())
    if health_status == "Unhealthy":
        return {"status": "fail"}, 500
    return {"status": "pass"}, 200

@app.get("/ready")
def readiness_check():
    health_status = map_state_to_health_status(get_current_service_state())
    if health_status == "Healthy":
        return {"status": "pass"}, 200
    return {"status": "fail"}, 500

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)

容器编排平台配置(以Kubernetes为例)

如果是在K8s中部署,只需将探针指向对应的端点即可:

livenessProbe:
  httpGet:
    path: /live
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

这种设计完全符合健康检查的核心逻辑:Liveness关注服务是否需要重启(Unhealthy状态下服务无法自行恢复,才需要重启),Readiness关注服务是否能正常处理请求(仅Healthy状态满足)。

内容的提问来源于stack exchange,提问作者oddparity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:49:57