我查看了文档并浏览了源代码,但我似乎无法弄清楚如何执行此操作。有没有办法在实现Kubernetes活性探测时发送查询字符串参数和路径?
我发送的字符串,如下所示:
/api/v1?q=...
成为URL编码并按以下方式命中服务器:
/api/v1%3fq=...
由于我在这个特定的API上没有这样的路线,我得到了404,并且Kube在分配的超时后重新获得了pod。
有没有办法将查询字符串参数定义为活性探针和/或欺骗URI编码器以允许查询字符串参数?
答案 0 :(得分:4)
编辑:现在应该在Kubernetes 1.3中修复。感谢Rudi C指出这一点。
Kubernetes v1.2中的活动探测器不支持传递查询参数。
Deis Controller回购中的This Issue有一个很好的解释。要点是LivenessProbe.HttpGet.Path被视为真正的URL路径(需要"?"转义为"%3f")。
我已经针对Kubernetes打开feature request Issue来讨论添加查询参数。
作为一种解决方法,您可以使用包含查询参数的exec livenessProbe(只要您的容器包含类似wget或curl的内容):
livenessProbe:
exec:
command:
- wget
- /api/v1?q=...
答案 1 :(得分:2)
您正在运行哪个版本?转义是一个应该在1.3中修复的错误:
https://github.com/kubernetes/kubernetes/pull/25064
不完美,但在YAML中不需要额外的API字段。
答案 2 :(得分:0)
如果您有某种令牌授权(通过get参数)并且您对root(service-name/
)进行了健康检查,则应省略斜杠,例如:
readinessProbe:
httpGet:
path: ?token=${TOKEN}
port: 80
scheme: HTTP
我必须通过PR changes来查找指定它的方法