前言
Knative 0.16.0 版本已于近期发布,针对 Knative v0.16.0 版本对这些新功能特性进行解读,让你快速对新版本特性有所深入了解。
从Knative 0.16.0开始,k8s 最小支持版本为:1.16。
Serving
Autoscaling-自动扩缩容
优化缩容时对不可达 revision 处理
当revision reachable时,没有必要再采用步长缩容对逻辑,直接缩容到0即可。
移除 PodAutoscaler custom metrics API
custom metrics API的之前主要作用是提供给 HPA 用于支持基于请求的并发数的metric指标,但是安装custom metrics API 会对 k8s 侵入性太强,另外custom metrics API 对于apiserver的代码维护也带来了问题。针对这些问题,从0.16.0版本开始不再支持custom metrics API。
核心 API
多容器支持
社区终于在0.16.0开始进行多容器支持(尽管当前是alpha)。可以在config-features 配置文件中通过设置“multi-container” 为 “enabled” ,开启多容器特性。
环境变量支持downwards API
可以在config-features 配置文件中通过设置“kubernetes.podspec-fieldref” 为 “enabled” ,开启环境变量支持downwards API 。
webhooks 高可用支持
通过leader选举支持webhooks主备高可用。
Networking-网络
支持通过Header中Tag进行路由选择
在服务请求的Header中,可以通过指定tag,来访问tag对应的revision版本。
knative-serving namespace删除istio注入标签
当前knative-serving namespace的istio注入标签已经没有实际的应用,因此在0.16.0版本中从 knative-serving namespace中移除istio-injection=enabled标签
Eventing
V1版本支持
从0.16.0开始,以下资源提供了v1版本支持:
- Subscription
- Channel
- InMemoryChannel
- Broker
- Trigger
- Sequence
- Parallel
这意味着Event这部分功能日渐成熟。
新增sugar-controller
引入一个 sugar-controller 主要用于调和 Namespace 和 Trigger,同时会从核心controller中移除Namespace reconciler和 Trigger reconciler
PingSource 事件接收高可用支持
当前接收PingSource adapter通过leader选举支持主备高可用部署。
总结
随着Knative 0.16.0 版本的发布,社区越来越关注用户 Knative 实际使用中的诉求, 如多容器支持、通过Header中Tag进行路由选择等。相信在后续的版本中会提供更多实用的功能来满足不同的 Serverless 场景实际运用。欢迎有兴趣的同学一起交流。