如何在Kubernetes探针处理http_status_code ?



我正在尝试在Kubernetes中实现Probe

我理解如果http_status_code >= 200 and <=399

探针返回成功
containers:
- name: myimage
image: myimage:45
imagePullPolicy: Never
readinessProbe:
httpGet:
path: /
port: 5004
然而,如果成功

,我们的应用程序返回状态码404(按照设计)。.在这种情况下如何使探测成功?

有办法做到这一点吗?

将探测更改为执行命令而不是http请求。Kubernetes在容器内执行命令,并根据命令的退出代码(0表示成功,非0表示失败)确定是否成功

  1. 创建一个脚本/health.sh,该脚本使用curl通过localhost调用健康检查端点。包含一个条件,如果返回码为404,则将退出码设置为0(成功),否则设置为1(失败)
#!/bin/sh
if [ $(curl -s -o /dev/null -w "%{http_code}" http://localhost:5004) -eq "404" ]; then
exit 0
else 
exit 1
fi
  1. 使用命令而不是http请求配置探针
readinessProbe:
exec:
command:
- /bin/sh
- -c
- /health.sh

如果不想修改容器,可以在命令部分定义内联脚本,如下所示

readinessProbe:
exec:
command:
- /bin/sh
- -c
- if [ $(curl -s -o /dev/null -w "%{http_code}" http://localhost:5004) -eq "404" ]; then exit 0; else exit 1; fi

相关内容

  • 没有找到相关文章

最新更新