【问题标题】:How do I hold a request on the k8s until pods is ready?在 pod 准备好之前,如何在 k8s 上保留请求?
【发布时间】:2020-09-01 22:47:29
【问题描述】:

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

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

PS: 我使用就绪探针。我说的情况是所有 pod 的 Readiness 探针都返回 false,因此所有 pod 都在使用中。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    请尝试使用 Readiness/Liveliness 探针,这是 kubernetes 所必需的。

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

    【讨论】:

    • 感谢您的 cmets。但是,我已经使用了 Readiness 探针。我说的情况是所有 pod 的就绪探测都是错误的(所有 pod 都在使用中(未就绪))。在这种情况下,请求超时。我想保留请求,直到 Pod 的就绪探测为真。
    【解决方案2】:

    尝试执行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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多