5

我查看了文档并浏览了源代码,但我似乎无法弄清楚如何做到这一点。在实现 Kubernetes 活跃度探测时,有什么方法可以将查询字符串参数与路径一起发送?

我发送的字符串,看起来像这样:

/api/v1?q=...

变为 URL 编码并以如下方式访问服务器:

/api/v1%3fq=...

因为我在这个特定的 API 上没有这样的路由,所以我得到一个 404,并且 Kube 在分配的超时后获取 Pod。

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

4

3 回答 3

4

编辑:这现在应该在 Kubernetes 1.3 中修复。感谢 Rudi C 指出这一点。

Kubernetes v1.2 中的 Liveness 探针不支持传递查询参数。

Deis Controller repo 中的这个问题有一个很好的解释。要点是 LivenessProbe.HttpGet.Path 被视为真正的 URL 路径(需要将“?”转义为“%3f”)。

我已经针对 Kubernetes 打开了一个功能请求问题,以讨论添加查询参数。

作为一种解决方法,您可以使用包含查询参数的 exec livenessProbe(只要您的容器包含 wget 或 curl 之类的内容):

livenessProbe:
  exec:
    command:
    - wget
    - /api/v1?q=...
于 2016-07-22T20:52:43.593 回答
3

你运行的是哪个版本?转义是一个应该在 1.3 中修复的错误:

https://github.com/kubernetes/kubernetes/pull/25064

不完美,但它不需要 YAML 中的其他 API 字段。

于 2016-07-22T21:02:32.673 回答
0

如果您有某种令牌授权(通过 get 参数)并且您对根 ( service-name/) 进行了健康检查,则应该省略斜杠,例如:

readinessProbe:
  httpGet:
    path: ?token=${TOKEN}
    port: 80
    scheme: HTTP

我必须查看PR 更改以找到指定它的方法

于 2018-03-12T17:39:37.080 回答