v0.2 版本发布

发布日期:2021-10-06

改进的可插拔性、自动缩放、稳定性和性能

宣布 Knative v0.2 版本发布

改进的可插拔性、自动缩放、稳定性和性能

我们很高兴地宣布 Knative 的新版本发布,Knative 是用于在 Kubernetes 上构建现代应用程序的一组中间件组件。Knative 的 0.2 版本是自该项目于 7 月份启动以来的第一个重大更新。它代表了整个 Knative 社区几个月来的努力,以解决我们从不断增长的 Knative 部署数量中学到的经验教训。

0.2 版本中最令人兴奋的一点是包含了事件。事件组件补充了 Knative 已定义的另外两个基础模块:服务和构建。我们期待着社区使用此新功能开发的新类型事件和创新解决方案。

服务在“内部”做出了重大改进,将 Knative 的关键领域封装到子系统中,并使用新的内部 API 来支持可插拔网络、自动缩放和缓存。

完整的发布说明可在 Knative 服务构建事件 存储库中找到。以下是一些亮点

新的事件资源模型 
事件存储库对资源模型进行了重大重构,导致源迁移到自定义资源定义 (CRD)。现在,事件包含对标准 Kubernetes 概念的复杂使用,从而带来更好的验证、更简洁的界面和 RBAC 支持。新架构使用以通道和订阅为中心的更简单的对象模型。

更松散的耦合
我们对 v0.1 收到的积极反馈之一是对定义 Knative 构建模块的“得体”选择。在 v0.2 中,Knative 进一步利用了这一点,使运营商能够独立安装构建、服务和事件组件。随着时间的推移,允许这些 Knative 组件之间松散耦合的契约还将支持第三方集成,例如将非 Knative 构建与服务一起使用,或将事件传递到非服务部署。我们很高兴看到社区将这带到什么方向。

可插拔子系统
我们还收到很多关于想要自定义 Knative 的反馈。目标始终是支持某种程度的可插拔性,因此在 v0.2 中对自定义进行了重大改进。我们在 v0.2 中引入了 3 个新的内部 API,将我们的核心资源模型与实现它们的子系统分离:网络、自动缩放和缓存。网络使开发人员能够用替代的入口实现替换我们的 Istio 依赖关系。自动缩放使开发人员能够用他们自己的设计替换我们的“简单便宜”的自动缩放器。缓存使开发人员能够使用镜像缓存策略来预加载整个集群中的容器镜像(没有捆绑的实现,因此这只是一个纯扩展点)。

改进的冷启动
冷启动性能的两个主要因素是 side-car 注入和镜像拉取延迟。随着他们的 1.0.2 版本的发布,Istio 在减少 Envoy 编程时间方面取得了进展。此外,我们已经能够禁用 side-car 注入来安装 Knative。为了让大家能够解决镜像拉取延迟,我们公开了一个名为“镜像”资源的新扩展点(knative/caching 的一部分),其中包含控制器在整个集群中预加载用户镜像所需的所有信息。缓存是我们很高兴看到社区建立的另一个功能。

自动缩放
我们已经用一个共享的自动缩放器替换了之前的每个修订版自动缩放器。新的自动缩放器基于与之前的自动缩放器相同的逻辑,但已发展为纯粹的指标驱动(包括 0->1->0),消除了不必要的 Revision servingState 字段。我们已经用整数 ContainerConcurrency 字段替换了 ConcurrencyModel(单一或多个)。这允许将并发性限制为某些用例(例如,有限的线程池)以外的值。

构建
Knative 构建添加了许多增量改进,包括新的 ClusterBuildTemplate 资源。运营商现在能够一次安装一组构建模板,而不是每个命名空间安装一次。构建模板参数现在也可以应用于构建步骤镜像名称。构建规范的新功能允许用户指定构建范围的超时、节点选择器和亲和性。最后但并非最不重要的是,构建状态已扩展到报告每个步骤的构建进度和构建挂起时间。

KubeCon 上的 Knative

来和我们谈谈吧!在即将举行的 KubeCon 大会上,上海和西雅图都有许多 Knative 会议。

上海

西雅图

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。 了解更多。