如何将 http 响应连接到 readiness 和 liveness 探测器
How to connect http response to readiness and liveness probes
当端点 returns /health 端点上的 HTTP 500 时,我尝试重新启动 pod。服务 probe-pod 在失败时不应向 pod 发送流量。
- 应用程序需要有一个端点 /start,它将指示它是否可以通过返回 HTTP 200 来接受流量。如果端点 returns 一个 HTTP 500,则应用程序尚未完成初始化
- 应用程序需要另一个端点 /health,它将通过返回 HTTP 200 来指示应用程序是否仍在按预期工作。如果端点 returns HTTP 500,则应用程序不再响应。
- 探测器应使用端口 8080
我知道就绪和活跃度探测是如何工作的,但如何连接它们的输出响应基础?我无法解决第一项和第二项。我如何测试解决方案?谁能帮帮我?
下面的方式我猜你可以选择,也可以参考这个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
安装在您的容器中。
当端点 returns /health 端点上的 HTTP 500 时,我尝试重新启动 pod。服务 probe-pod 在失败时不应向 pod 发送流量。
- 应用程序需要有一个端点 /start,它将指示它是否可以通过返回 HTTP 200 来接受流量。如果端点 returns 一个 HTTP 500,则应用程序尚未完成初始化
- 应用程序需要另一个端点 /health,它将通过返回 HTTP 200 来指示应用程序是否仍在按预期工作。如果端点 returns HTTP 500,则应用程序不再响应。
- 探测器应使用端口 8080
我知道就绪和活跃度探测是如何工作的,但如何连接它们的输出响应基础?我无法解决第一项和第二项。我如何测试解决方案?谁能帮帮我?
下面的方式我猜你可以选择,也可以参考这个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
安装在您的容器中。