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