前言
Knative serving 0.7版本在6月25日正式发布,本次版本发布主要是继续推进v1beta API的落地,HPA支持并发请求数进行扩缩容终于在这个版本实现了。注意这次去掉了一些过时的字段,详细见下面的不兼容变更。本文主要描述0.7版本的变更。
概览
serving.knative.dev/v1beta1
(因为 #4533 ,需要 K8s 1.14+)
在0.6扩展了 v1alpha1
API 包含 v1beta1
的字段,在这次发布中,将 v1alpha1
的字段限制在 v1beta1
的子集内,并且不允许出现v1beta1
不适合的字段,这样,我们可以利用kubernetes 1.11+ 支持的相同模式来发布 v1beta1
。
因为k8s处理多个版本时存在bug,导致无法在旧版本编辑资源,目前是准备发布两个yaml,一个是只支持 v1alpha1
,可以兼容k8s 1.11+,另一个同时支持两个版本,需要k8s 1.14+。
HPA根据并发请求指标扩缩容
之前的版本HPA支持根据CPU扩容,在这次发布,HPA支持和默认扩缩容组件一样的"并发请求数"指标进行扩缩容。
HPA依然还不支持缩容到零,另外还要想办法暴露这些指标给任意的扩缩容插件。
当前的实现方式是通过autoscaler来抓取用户容器的并发请求数指标,把autoscaler注册成一个custom metrics api server,HPA通过这个方式来获取指标进行扩缩容。
非root用户容器
因为安全原因,使用非root用户来启动,包括queue-proxy。
不兼容变更
- 去掉了之前过时的状态字段
- Service里面的Build和Manual模式现在不支持了
- Route tags默认生成的url生成方式改变
扩缩容
Fixes:
- 增加autoscaler的readiness健康检查
- 根据activator的扩缩容调整activator限速器行为
- Revision在达到最小副本数时才更改状态为ready
核心API
- 暴露 v1beta1 API #4199
- 容器中使用非root用户启动 #3237
- 允许用户填写容器名称 #4289
- 支持projected volume #4079
- 删除过时的状态字段 #4197
- Build不再支持 #4099
- Manual模式不再支持 #4188
- V1beta1 客户端和稳定性测试 #4369
- 旧的v1alpha1 schema 通过webhook转换 #4080
-
queue-proxy
新增annotation用于限制资源占用 #4151 - Knative Sercice的annotation传递到Route和Configuration #4363, #4367
Fixes:
- 改进Ready/Generation的处理,如果底下资源还没有调和,更新状态非调和状态 #4185
- 修复 Revision 回收 #4187, #4245
- 把pod调度失败的错误信息写入Revision状态中 #4191
- 解决无法拉取scheme1版本的镜像 #4430
网络
- 把route的annotation传递到ClusterIngress #4087
- 引入 tagTemplate 配置,支持定义版本的域名格式 #4292
- 支持自定义的子域名 #4210
- 允许定义最长请求超时时间 #4172
- 在请求中设置
Forwarded
header #4376
Fixes:
监控
Fixes:
- 修复一些Grafana dashboard
- 移除内置的jaeger-operator,把它变成依赖来使用
参考
内容来自官方 release note https://github.com/knative/serving/releases