我的目标: 实现一个每周运行一次的 cron 作业,我打算在 Knative 上实现这个拓扑以节省计算资源:
PingSource -> knative 服务
PingSource 将每周一次向 knative 服务发出一个虚拟事件,以调出 1 个 knative 服务 pod。knative service pod 会获取大量数据,然后进行处理。
我的担心:
如果我设置enable-scale-to-zero
为 true,Knative pod 自动缩放器可能会关闭 knative 服务 pod,即使该 pod 尚未完成其工作。
到目前为止,我探索了:
scale-to-zero-grace-period
which 可以配置为告诉自动缩放器在最后一个流量结束后应该等待多长时间才能关闭 pod 。但我不认为这种方法是微妙的。我更喜欢有点类似于 readinessProbe 或 livenessProbe。在发送终止信号之前,自动缩放器应该发送一个探测来了解 pod 是否正在处理某些东西。此外,根据 knative 的文档,有两种类型的事件接收器:可调用和可寻址。Addressable 和 Callable 都返回响应或确认。knative 自动缩放器是否会将 pod 视为处理请求,直到 pod 返回响应/确认?所以只要 pod 没有响应,它就不会被自动缩放器移除。