我如何在k8s上保持请求,直到准备好豆荚?

时间:2020-08-31 17:22:48

标签: kubernetes

在k8s上,当我请求Pod且所有Pod都在使用中(尚未就绪)时,请求将立即超时。 我要保留请求,直到准备好Pod,然后将请求发送到Pod。

您知道一种用于负载平衡的超时持续时间设置吗? 另外,我找不到与此相关的任何文档,是我从根本上误解了什么吗?

PS: 我使用就绪探针。我说的情况是所有Pod的“就绪”探测器返回false,因此所有Pod都在使用中。

2 个答案:

答案 0 :(得分:3)

请尝试使用“就绪/活跃度”探针,这对于kubernetes是必需的。

基于这两个状态(成功后),kubernetes会进行通知,并且相应地,kubernetes会将请求重定向到相应的pod,因为pod已准备就绪且处于活动状态,现在它们将能够处理请求。

答案 1 :(得分:0)

尝试执行kubectl wait命令:

$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available]

$ kubectl wait pod-running <pod-name>
$ kubectl wait pod-running @pod-id
$ kubectl create -c example.json | kubectl wait pod-running -  # accept from pod name/ID from stdin
$ kubectl wait pod-template <pod-name> --format-template='{{ if .Status.Condition == "Running" }}1{{ else }}0{{ end }}'

您还可以在插件或配置文件中定义自定义。

看看:kubernetes-conditions-api