前言
Knative 0.17.0 版本已于近期发布,对于 Knative v0.17.0 版本新特性,我们进行解读,让大家对 Knative 新版本快速了解。
Knative 0.17.0 支持 k8s 最小支持版本为:1.16。
Serving
Autoscaling-自动扩缩容
- 1)支持Revision初始POD数设置
在0.17.0之前的版本中,创建新的Revision(即使新Revision流量比例为0)默认会先创建出 1 个POD实例,新的POD创建完成之后,如果没有流量,缩容为 0。 其实大多数场景下,新的Revision创建完成之后不需要立刻创建出POD。从0.17.0开始引入 inital scale 参数,可以指定新的 Revision 为 0。
inital scale 参数可以通过注释设置:
autoscaling.internal.knative.dev/initialScale
核心 API
组件HA高可用支持
从0.17.0版本开始,默认开启组件HA,可以通过配置参数‘--disable-ha’ 关闭HA。
Knative Service 特性支持
- 1) 对 affinity, nodeSelector, tolerations 和 securitycontext 进行了支持。对于该特性的支持比较意外,因为该特性很早就被提出过,但开始的社区的反馈是 serverless(no server) 场景下不应该关心节点的调度。目前来看结合实际的使用需求场景,最终社区做出了妥协。
- 2) 新增全局最大扩容Pod配置参数max-value,当没有设置autoscaling.knative.dev/maxScale值时,使用该全局配置作为最大扩容Pod。
- 3) 优化 Revision 版本回收机制。新增Revision版本最大数maximum限制,同时支持禁用基于时间的Revision回收策略。
Networking-网络
KIngress
- 1)最大超时设置。对于gRPC stream处理超时的问题,默认超时时间调整为了48小时。
- 2)支持域名重写(RewriteHost)。通过该特性可以实现自定义域名。以Istio实现为例,自定义域名‘vanity.com’通过‘rewrite’实现重定向。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: vanity-ingress
spec:
gateways:
- knative-serving/knative-ingress-gateway
hosts:
- vanity.com
http:
- match:
- authority:
prefix: vanity.com
gateways:
- knative-serving/knative-ingress-gateway
rewrite:
authority: helloworld-go.default.example.com
route:
- destination:
host: cluster-local-gateway.istio-system.svc.cluster.local
port:
number: 80
Eventing
PingSource优化
0.17.0版本 PingSource 支持时区(time zone)设置
事件处理优化
在 In Memory Channel 和 Multi-Tenant Channel 中发送事件失败时,支持重试机制。
总结
Knative 0.17.0 版本中引入了版本初始化实例数设置以及对节点调度参数的支持(nodeSelector etc.), 表明Knative社区会更多的关注实际应用场景,相信后续有更多实用特性会提供出来。欢迎有兴趣的同学一起交流。