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