具有查询字符串参数的Kubernetes活性探测器

时间:2016-07-22 17:32:03

标签: kubernetes kubernetes-health-check

我查看了文档并浏览了源代码,但我似乎无法弄清楚如何执行此操作。有没有办法在实现Kubernetes活性探测时发送查询字符串参数和路径?

我发送的字符串,如下所示:

/api/v1?q=...

成为URL编码并按以下方式命中服务器:

/api/v1%3fq=...

由于我在这个特定的API上没有这样的路线,我得到了404,并且Kube在分配的超时后重新获得了pod。

有没有办法将查询字符串参数定义为活性探针和/或欺骗URI编码器以允许查询字符串参数?

3 个答案:

答案 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来查找指定它的方法