开发者社区> 元毅> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

深入解读 Knative Eventing 0.7 版本新特性

简介: Knative Eventing 0.7 版本已经于 6 月 26 号正式发布。本次发布主要围绕重构 Channel 特性展开。本篇文章重点解读了这些特性,并且以此展望一下 Knative Eventing 后续版本的发展。
+关注继续查看

前言

Knative Eventing 0.7 版本已经于 6 月 26 号正式发布。本次发布主要围绕重构 Channel 特性展开。本篇文章重点解读了这些特性,并且以此展望一下 Knative Eventing 后续版本的发展。

新特性

重构 Channel

作为 Eventing v0.7 版本最大的特性, 重构了 Channel 的设计:为每个 Channel 单独创建了CRD资源。
在 Eventing v0.6 版本中, Channel 是通过 provisioner 模式实现的。以 kafka Channel 为例:

   apiVersion: eventing.knative.dev/v1alpha1
   kind: Channel
   metadata:
     name: my-kafka-channel
   spec:
     provisioner:
       apiVersion: eventing.knative.dev/v1alpha1
       kind: ClusterChannelProvisioner
       name: kafka

这里是通过指定名称为 kafka 的 ClusterChannelProvisioner。这样的实现方式存在以下问题:

  • Channel 中只通过一个 provisioner 字段就设置了包含的所有属性。
  • 每一个Channel Controller都会监听到所有的资源,再进行过滤。
  • Event Source中的实现方式更符合规范,即每个Source 单独的CRD和Controller,值得借鉴。

针对这些之前存在的不合理的设计, 在Eventing v0.7版本中,为每个Channel 单独创建了CRD资源,改造涉及如下:

  • InMemoryChannel CRD 替换 in-memory ClusterChannelProvisioner
  • KafkaChannel CRD 替换 kafka ClusterChannelProvisioner
  • NatssChannel CRD 替换 natss ClusterChannelProvisioner

改造后的 kafka Channel 示例如下:

   apiVersion: messaging.knative.dev/v1alpha1
   kind: KafkaChannel
   metadata:
     name: my-kafka-channel
   spec:
     numPartitions: 1
     replicationFactor: 3

另外这些现存的 ClusterChannelProvisioner,会在未来的版本中删除掉。

支持事件顺序处理(Sequence)

在 0.7 版本中定义了 Sequence CRD 资源用于简单的pipeine(F1->F2->F3),这个特性比较有意思,它可以将上一步处理的事件结果作为下一步的输入。类似图例:
image

在 Channel, Subscription, Broker, 以及 Trigger 中增强注释信息

在 Channel, Subscription, Broker, 以及 Trigger 中增加了创建和更新的用户信息。

事件追踪支持

  • Channel dispatchers 可以查看事件 Trace 信息
  • ClusterChannelProvisioners, Sources, 以及 Broker 中支持导出Trace信息到Zipkin。

事件源增强

  • ContainerSource 事件源支持设置PodTemplateSpec
  • CronJobSource 事件源支持设置resource limits 和 requests

其它变更

  • Eventing controller 在新版本中明确禁用 istio sidecar 注入Pod
  • 为Broker ingress 和 filter 定义全局的(如 knative-eventing 命名空间) ConfigMap。
  • 参考Serving中的策略,为Eventing中所有的资源对象打上eventing.knative.dev/release 标签, Value值可以设置为release 版本或者devel

升级与兼容

对于此次的变更,如升级到 Eventing 0.6版本需要关注一下几点:

  • 对于 kafka-channel-dispatcher StatefulSet 在新版本中不在安装,
  • 在0.7版本中in-memory-channel ClusterChannelProvisioner 已被移除掉。可以使用InMemoryChannel CRD替换原 in-memory-channel ClusterChannelProvisioner
  • Broker ingress pods 新版本会使用 eventing-broker-ingress ServiceAccount。如果之前创建的 Broker 没有使用eventing injection注释,需要手动创建所需的 ServiceAccount 和 RoleBindings。
  • webhook Deployment 在新版本中使用了 eventing-webhook Deployment 名称进行了替换。原有的webhook 会缩为 0 进行处理,接下来也会被移除掉。

总结

从本次 Knative Eventing 0.7 版本发布的特性不难看出,当前 Knative Eventing 在向前的迭代中不断优化设计,相信在接下来的版本中也会更多的聚焦设计优化,如计划在 v0.8 版本中完成 Source 到 Importer 的重命名改造等。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Knative Eventing
Knative Eventing
7 0
解读Knative 0.17.0版本特性
Knative 0.17.0 版本已于近期发布,对于 Knative v0.17.0 版本新特性,我们进行解读,让大家对 Knative 新版本快速了解。
1582 0
解读 Knative Eventing v0.14.0 版本特性
Knative Eventing v0.14.0 版本已于近期发布,新版本带来了哪些特性呢?本文会进行相关的解读
1179 0
knative serving 0.10.0 版本变更
前言 Knative Serving v0.10.0 版本已经于 10 月 29 号正式发布。本次版本主要优化了activator负载均衡等能力,具体细节见以下内容。 主要变更 Activator半理想的负载均衡优化 这部分的设计文档见  Better Load Balancing in Activator (google doc)在对activator负载均衡的优化中,设置 containerConcurrency: 1 后因为排队导致的错误已经解决。
1053 0
Knative 基本功能深入剖析:Knative Eventing 之 Sequence 介绍
作者 | 元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作。 导读:在实际的开发中我们经常会遇到将一条数据需要经过多次处理的场景,称为 Pipeline。那么在 Knative 中是否也提供这样的能力呢?其实从 Knative Eventing 0.7 版本开始,就提供了 Sequence CRD 资源,用于事件处理 Pipeline。
1374 0
Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
Knative Serving 默认情况下,提供了开箱即用的快速、基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA)。下面带你体验如何在 Knative 中玩转 Autoscaler。
1958 0
[UWP]了解模板化控件(6):使用附加属性
原文:[UWP]了解模板化控件(6):使用附加属性 1. 基本需求 之前的ContentView2添加了PointerOver等效果,和TextBox等本来就有Header的控件放在一起反而变得鹤立鸡群。
815 0
输入控件tagsinput
​摘要:   ​tagsinput是一款基于jQuery的插件。具有组织输入内容、校验、backspace删除等功能。当你在输入框输入结束按下enter键,tagsinput会将你输入的内容用标签封装,每个输入的内容用逗号分隔。
704 0
+关注
元毅
擅长容器, Kubernetes 技术领域
50
文章
0
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
相关文档: 云原生应用交付平台 ADP 容器镜像服务 容器服务Kubernetes版
文章排行榜
最热
最新