当端点在/ health端点上返回HTTP 500时,我尝试重新启动pod。服务pod-pod在出现故障时切勿将流量发送到pod。
我知道准备情况和活跃度探测器如何工作,但是如何连接其输出响应库?我不能解决第一项和第二项。我该如何测试解决方案?有人可以帮我吗?
答案 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
。