如何将http响应连接到就绪和活跃性探针

时间:2020-07-02 14:19:52

标签: kubernetes readinessprobe

当端点在/ health端点上返回HTTP 500时,我尝试重新启动pod。服务pod-pod在出现故障时切勿将流量发送到pod。

  • 应用程序需要具有一个端点/ start,它将通过返回HTTP 200指示是否可以接受流量。如果端点返回HTTP 500,则应用程序尚未完成初始化
  • 应用程序需要具有另一个端点/运行状况,以通过返回HTTP 200来指示应用程序是否仍在按预期方式运行。如果端点返回HTTP 500,则应用程序将不再响应。
  • 探针应使用端口8080

我知道准备情况和活跃度探测器如何工作,但是如何连接其输出响应库?我不能解决第一项和第二项。我该如何测试解决方案?有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

以下是我猜的选择方式,为清楚起见,也请参考此link

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

答案 1 :(得分:1)

当端点在/ health端点上返回HTTP 500时,我尝试重新启动pod。服务pod-pod在出现故障时切勿将流量发送到pod。

这是Kubernetes中具有就绪探针的默认行为。如果探测失败,则表明该Pod尚未就绪,并且没有服务将流量转发到该Pod。您可以使用periodSeconds选项来控制此响应的速度(可能会影响性能)。例如,您可以将其设置为1秒,以确保一旦探测失败,就会将其从流量池中删除。

就就绪,活跃性和启动探针而言,它们具有httpGet机制。他们认为所有状态代码200-399都通过了,其他都认为失败了,但是他们不允许您控制哪些状态代码是“成功”,哪些状态代码是“失败”。

如果您希望对状态代码进行更多控制,则可以使用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