我已经在gke上使用Cloud run部署了一个服务,该服务使用Knative作为k8s的抽象。默认MaxRevisionTimeoutSeconds
在 knative 默认配置中设置为 600s,但根据此 PR,这是可自定义的。
我在官方 Knative 文档中找不到任何内容,有人可以在这里帮助我吗?
更新:
在挖掘了更多原生源代码和文档之后。看起来MaxRevisionTimeoutSeconds
是在resource=ConfigMap/config-defaults
中定义的。因此,必须使用自定义值对其进行更新。
由此看来,我们可以使用称为operator
的东西来修改 ConfigMap 资源,但它不起作用可能是因为 gcp 不使用运算符来安装 Knative 组件。无论如何,我继续安装运算符,然后使用resource=knativeserving
覆盖配置默认值。但是当我尝试重新部署服务时,这也不起作用。
下一个解决方案是使用kubectl edit
直接编辑配置默认值。我什至尝试这样做,但遇到了奇怪的行为。当我使用kubectl describe
检查更改的值时编辑 YAML 文件后,它有时会显示修改后的值,有时显示旧值,有时甚至不会在 YAML 中显示该特定键值对。此外,在执行此编辑后尝试重新部署服务时,它不起作用。
如果有人能帮我解决这个问题,那就太好了。
MaxRevisionTimeoutSeconds
是一个集群全局设置,它在每个修订版上强制实施TimeoutSeconds
的最大值。此值的存在是为了让群集管理员可以设置单个 HTTP 请求在系统中的时间上限。在 HTTP 路由组件上配置正常关闭设置以防止在升级期间丢弃请求时,了解上限非常有用。
Cloud Run on GKE 可能已经覆盖了这些配置,以便它们可以按照可预测的计划升级底层 Istio 和 Knative 组件。(如果您有 10% 的升级预算,并且需要 10m 来耗尽一个组件,那么您的最短升级时间可能在 110m 左右,考虑到额外的调度/图像获取/启动时间。