解读Knative 0.16.0版本特性

前言

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版本。
例如:如果请求访问 http://svc-name.ns.svc 服务,并且在Header中设置了:Knative-Serving-Tag:tag-name, 那么该请求就会路由到http://tag-name-svc-name.ns.svc 对应的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 场景实际运用。欢迎有兴趣的同学一起交流。

欢迎加入 Knative 交流群

解读Knative 0.16.0版本特性

上一篇:Knative 实战:基于 Knative Serverless 技术实现天气服务-上篇


下一篇:解读 Knative Serving v0.15.0 版本特性