【问题标题】:Need to create a pod for each new request from frontend service in Kubernetes需要为来自 Kubernetes 前端服务的每个新请求创建一个 pod
【发布时间】:2019-02-06 04:29:48
【问题描述】:

我有一个用例,其中前端应用程序将文件发送到后端服务进行处理。并且后端服务 pod 一次只能处理一个请求。如果有多个请求,服务应该自动缩放并将该请求发送到新的 Pod。 因此,我正在寻找一种方法,可以针对每个请求生成一个新的 POD,并且在后端服务 pod 完成处理后,它将结果返回给前端服务并自行销毁。 这样每个 pod 一次只处理一个请求。

我探索了 HPA 自动缩放,但没有找到任何合适的方法。 开放使用任何自定义指标服务器,如果他们能够满足上述场景,甚至可以使用 Jobs。

因此,如果有人了解或处理相同的用例,请帮助我,以便我也可以尝试该解决方案。 提前致谢。

【问题讨论】:

  • 谢谢两位。但是还有一个问题,即使使用某个 HPA 或服务帐户创建一个新的可用 pod,即使那样我们也不能保证通过使用后端服务名称它会重定向到该可用 pod,因为服务会自动执行负载平衡。除非我们在前端使用新的 pod IP 代替服务名称来代替服务名称进行调用。请求可以去任何地方。

标签: kubernetes kubernetes-helm horizontal-scaling amazon-eks


【解决方案1】:

我想不出任何内置的东西。您可以为您的应用创建一个有权创建 pod 的服务帐户,然后将生成行为直接构建到您的应用代码中。如果您可以获取有关哪些 pod 可用的指标,您可以将 HPA 与 Prometheus 结合使用,以确保始终至少有一个未占用的后端,但这取决于您的东西暴露的指标类型。

【讨论】:

    【解决方案2】:

    正如已经说过的,没有内置的方法可以做到这一点,你需要找到自定义的方法来实现这一点。

    一种解决方案可以是使用服务帐户和对 api 服务器的 http 请求在前端 pod 接收到您的服务后立即创建后端 pod,检查后端 pod 的状态,一旦启动,将请求转发到后端结束。

    第二种方法,我可以考虑使用一些临时存储(db 或 hostpath 卷)并在您的 master 中写入 cronejob 来轮询该存储,并取决于具有作业容器的状态 spawn pod。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2019-08-02
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      相关资源
      最近更新 更多