【发布时间】:2021-09-24 04:20:23
【问题描述】:
我有一个(内部)K8s 部署(Python、TensorFlow、Guinicorn),有大约 60 个副本和一个附加的 K8s 服务来分发传入的 HTTP 请求。这 60 个 pod 中的每一个实际上一次只能处理一个 HTTP 请求(由于 TensorFlow 的原因)。处理一个请求需要 1 到 4 秒。如果在 Pod 仍在处理一个请求时将第二个请求发送到该 pod,则第二个请求只会在 Gunicorn 积压中排队。
现在我想尽可能减少排队发生的可能性,即,只要存在这样一个未占用的 pod,就将新请求路由到其中一个未占用的 pod。
循环法不能解决问题,因为不是每个请求都需要相同的时间来回答(见上文)。
Python 应用程序本身可能会使用于 ReadinessProbe 的端点在处理正常请求时失败,但据我了解,就绪探针并不适用于动态(K8s 需要每秒轮询多次) )。
那么我怎样才能实现目标呢?
【问题讨论】: