【问题标题】:How to tells Knative Pod Autoscaler not to kill in-progress long running pod如何告诉 Knative Pod Autoscaler 不要杀死正在进行的长时间运行的 pod
【发布时间】:2020-12-19 01:50:28
【问题描述】:

我的目标: 实现一个每周运行一次的 cron 作业,我打算在 Knative 上实现这个拓扑以节省计算资源:

PingSource -> 原生服务

PingSource 将每周一次向 knative 服务发出一个虚拟事件,以调出 1 个 knative 服务 pod。 knative service pod 会获取大量数据,然后进行处理。

我的担忧: 如果我将 enable-scale-to-zero 设置为 true,Knative pod 自动缩放器可能会关闭 knative 服务 pod,即使该 pod 尚未完成其工作。

到目前为止,我探索了:

  • scale-to-zero-grace-period 可以配置为告诉自动缩放器在最后一次流量结束后应该等待多长时间才能关闭 pod。但我不认为这种方法是微妙的。我更喜欢有点类似于 readinessProbe 或 livenessProbe。在发送终止信号之前,自动缩放器应该发送一个探测来了解 pod 是否正在处理某些事情。

  • 此外,根据 knative 的文档,有两种类型的事件接收器:可调用和可寻址。 Addressable 和 Callable 都返回响应或确认。 knative 自动缩放器是否会将 pod 视为处理请求,直到 pod 返回响应/确认?所以只要 pod 没有响应,它就不会被自动缩放器移除。

【问题讨论】:

    标签: autoscaling knative knative-serving knative-eventing


    【解决方案1】:

    Knative 自动扩缩器依赖于严格以请求/响应方式工作的 pod。只要将“大量数据”作为 HTTP 请求(或 Websocket 会话或 gRPC 会话等)的一部分进行处理,就不会考虑删除 pod。

    发送请求,立即返回,然后在后台处理数据是行不通的。自动缩放器会认为根本没有活动,因此将其关闭。不过有一个sandbox project 试图实现这种异步语义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多