如何将 http 响应连接到 readiness 和 liveness 探测器

How to connect http response to readiness and liveness probes

当端点 returns /health 端点上的 HTTP 500 时,我尝试重新启动 pod。服务 probe-pod 在失败时不应向 pod 发送流量。

我知道就绪和活跃度探测是如何工作的,但如何连接它们的输出响应基础?我无法解决第一项和第二项。我如何测试解决方案?谁能帮帮我?

下面的方式我猜你可以选择,也可以参考这个link为了清楚

 livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: as-required-by-you
    
 readinessProbe:
      httpGet:
        path: /start
        port: 8080

I try to restart the pod when an endpoint returns an HTTP 500 on the /health endpoint. The service, probe-pod, should never send traffic to the pod while it is failing.

这是带有就绪探测的 Kubernetes 中的默认行为。如果探测失败,则 pod 不是 'ready',并且没有服务将流量转发到该 pod。您可以使用 periodSeconds 选项控制它的响应能力(有一些性能损失影响)。例如,您可以将其设置为 1 秒,以确保一旦探测失败,它就会从流量池中取出。

在 Readiness、Liveness 和 Startup 探测方面,它们具有 httpGet 机制。他们将所有状态代码 200-399 视为通过,将其他所有内容视为失败,但他们不允许您控制哪些状态代码是 'Success' 哪些是 'Failure'.

如果您想更好地控制状态代码,您可以使用 ExecAction 机制,只需使用如下脚本:

CODE=`curl -s -o /dev/null -w '%{http_code}' http://www.example.org/`; if [ "$CODE" -ge 200 ] && [ "$CODE" -le 399 ]; then exit 0; else exit 1; fi

在上述情况下,您必须确保 curl 安装在您的容器中。