v0.19 版本发布

发布时间:2020-11-20 ,  修订时间:2023-08-03

宣布 Knative v0.19 版本发布

Knative 的新版本现已在多个组件中提供。请按照文档中 安装 Knative 中的说明进行操作,以安装相应的组件。

目录

亮点

  • Knative 构建的所有组件现在都支持多架构,包括 arm64,这是 ARM 架构机器(如 树莓派)使用的架构。
  • 监控捆绑包已被删除,并且 git 存储库已归档。
  • 通过添加缩减延迟来改进冷启动。
  • 不再挂载 /var/log,这允许某些使用此目录的映像(如 docker.io/nginx)用作 Knative 服务。
  • 一项新的 Alpha 功能,允许在命名空间范围内进行域名映射。
  • 您可以在 Eventing 配置映射 config-br-defaults 中指定代理的传递规范默认值。
  • Eventing 通过修复错误不断提高稳定性。
  • CLI 现在提供 arm64 二进制文件,并引入了两个新命令 kn service applykn service import

Serving v0.19

🚨 突破性变化 - 已删除弃用的监控捆绑包 (#9807) - 弃用 serving v1alpha1 和 v1beta1 API (#9617, #9620) - 我们仅在操作员启用了日志收集时才在 /var/log 上挂载卷。运行时契约 /var/log 要求已从 MUST 更改为 MAY (#9683]

💫 新功能和更改 - 添加了缩减延迟功能,允许在请求计数下降后将副本数量保持一段时间,以避免冷启动惩罚。(#9626) - (Alpha) 在 v1alpha1 中添加了 DomainMapping CRD,允许将自定义域名映射到 Knative 服务 (#9714, #9735, #9752, #9796, #9915, #10044) - 添加集群范围的标志 max-scale-limit。这确保了新修订的集群范围的标志 max-scale 和每个修订的注释 “autoscaling.knative.dev/maxScale” 不会超过此数字。(#9577) - 我们所有的部署都使用最少的内核功能运行。(#9973) - 自动缩放器现在支持多个 Pod。自动缩放器部署需要先缩放到 0,然后才能缩放到其他副本值。(#9682) - 更新了服务模式,以包含高级基本模式。(#9436, #9953) - 队列代理不再允许以 root 用户身份运行,它们具有只读的 root 文件系统,并且所有功能都被删除。(#9974) - ResponsiveRevisionGC 默认情况下处于启用状态 (#9710) - 修订的命名现在更加清晰和一致。(#9740)

🐞 错误修复 - 域由 k8s 库 IsFullyQualifiedDomainName() 验证。(#10023) - 修复了自动缩放器中罕见的空指针异常 (#9794) - 当标签与预期标签不同时,将协调 Ingress。(#9719)

Eventing v0.19

💫 新功能和更改 - Config-br-defaults 支持设置传递规范默认值 (#4328)

🐞 错误修复 - 修复了可能导致 eventing-webhook 在初始创建时出现循环崩溃的错误。(#4168) - 更改映像拉取策略,以便 sinkbinding 源测试在 kind 中工作。(#4317) - 依赖项就绪有时会遗漏,因为触发器协调器中使用了不匹配的信息器/列表器。(#4296) - 调度器错误地表现得像一个普通的协调器,而不是跳过状态更新。我想知道这是否会导致与普通协调器作斗争的麻烦。(#4280) - 修复了问题 #4375,在该问题中,我们不会协调对协调策略或持续时间的更改。(#4405) - 仅在将订阅者添加到处理程序后,才在 IMC 中更新订阅者状态。减少了订阅者在数据平面实际配置之前被标记的失败次数。(#4435) - 对网络故障重试 (#4454) - ingress/filter 现在处理正确的 k8s 生命周期的。(#3917) - KnativeHistory 扩展不再添加到通过通道传递的事件中 (#4366)

🧹 清理 - 将模糊测试器(与测试相关的代码)移至测试文件,以防止它们被烘焙到二进制文件中。二进制文件大小略有减少。 (#4399) - DeliverySpec 验证拒绝负重试配置。 (#4216) - 只清理 mtbroker reconciler 结构中的一些未使用的字段。 (#4318) - 指向 Broker 引用,而不是使用硬编码路径。这也使在其他代理上重用更容易。 (#4278)) - 减少引入模糊测试器的次数。 (#4447) - 简化 IMC 实现,减少因全局重新同步造成的 churn。 (#4359) - 使用 github action 运行 codecov。 (#4237) - 从二进制文件中删除所有 knative 模糊测试器。 (#4402) - 将 ContainerSource 移动到 v1 API。 (#4257) - Eventing 现在在提交前测试支持的 Kubernetes 版本范围。 (#4273)) - 每 4 小时在 Github actions 上运行 kind e2e 测试。 (#4412) - 将 go-retryablehttp 更新到 v0.6.7 (#4423)

Eventing 贡献 v0.19

Eventing Kafka Broker v0.19

针对 eventing-kafka-broker 的发布说明

需要采取的措施(升级前) - 运行 kubectl delete configmap -n knative-eventing kafka-broker-brokers-triggers

🚨 重大更改 - 默认复制因子为 3(之前为 1) (#375)

💫 新功能和更改 - eventing-kafka.yaml 可用于安装 Broker 和 KafkaSink。 (#367) - 数据平面 pod 以 Prometheus 格式公开服务器和客户端指标。 (#231 #244) - 接收器组件公开: - http_requests_produce_total - 已接受的生产请求数(200 级响应) - http_requests_malformed_total - 格式错误的生产请求数(400 级响应) - 调度器组件公开: - http_events_sent_total - 传递到 Apache Kafka 的事件数 - Broker 重试发送事件。 (#268 #263 #258)

🐞 错误修复 - 从控制器中删除 config-logging 卷。 (#288) - 在调试模式下记录大型配置时线程被阻塞。 (#346 #378)

🧹 清理 - 容器镜像的大小约为 90MB,而不是约 287MB。 (#265 #306) - 在关闭时优雅地清理资源。 (#334) - KafkaSink 用法:https://gist.github.com/matzew/e2c2fcd2696a346f25b8bc9e64bfd0fa

Eventing Gitlab v0.19

针对 eventing-gitlab 的发布说明

💫 新功能和更改 - 声明 GitLabSource 实例发出的事件类型,以便它们作为 Knative EventTypes 传播。 (#24)

🐞 错误修复 - 对发出的 CloudEvents 的 type 属性进行清理,使其不包含空格和大写字母。 (#24)

🧹 清理 - 确保发出的 CloudEvents 的 source 属性稳定且可预测。 (#24)

Eventing RabbitMQ v0.19

针对 eventing-rabbitmq 的发布说明

💫 新功能和更改 - 实现死信队列

🐞 错误修复 - 修复 Trigger 依赖关系无法始终正确跟踪的错误 - 修复在非默认集群名称中网络名称不正确的错误

🧹 清理 - 使用 Kind 进行 e2e 测试,并使用 Knative 的通用 github actions。

客户端 v0.19

  • kn 0.19.0 引入了两个新命令(kn service applykn service import)并删除了一些已弃用的选项,此外还有错误修复和其他改进,如下所述。
  • 您可以在 CHANGELOG 中找到更改的完整列表。

🚨 重大更改

以下已弃用的选项已被删除

  • 所有 CRUD 命令的 --async。使用 --no-wait 代替
  • 管理服务时的 --requests-cpu--request-memory--limits-cpu--limits-memory。替代方法是使用 --limit memory=..--limit cpu=...(对于 --request 也是如此)。这两个选项可以组合使用,如 --limit memory=256Mi,cpu=500m

💫 新功能和更改

kn service apply

  • 添加了一个新的 kn service apply 命令,允许对 Knative 服务进行声明性管理。此新命令在 CI/CD 上下文中特别有用,允许在创建或更新服务时进行幂等操作。它的工作方式与 kubectl apply 类似,并使用客户端 3 路合并算法来更新服务。这里直接重用了 kubectl 合并算法。由于 apply 在 Knative 的自定义资源类型上运行,因此在处理 CRD 时,它会遇到与 kubectl apply 中客户端合并算法相同的限制。即数组无法合并,而是被更新覆盖。此限制会影响所有容器特定参数。

  • 在未来,我们计划添加一个更好的合并算法,该算法支持与 kubectl apply 对内在 K8s 资源的支持类似的完整策略 3 路合并。

  • 需要注意的是,kn service applykn service update 从根本上不同,因为使用 kn service apply 时,需要将完整配置作为命令行选项或声明文件(使用 --filename 时)提供。使用 kn service update 时,您只需指定要更新的部分,而不会触及任何其他服务配置。apply 的这一特性也意味着您始终必须在 kn service apply 中提供映像作为唯一必需的参数。

  • 例如

    # Initially apply a service with the given image and env var
    kn service apply random --image rhuss/random:1.0 --env foo=bar
    
    # Update the service to add a ying=yang env var to the already existing one
    kn service update random --env ying=yang
    
    # Apply a full new configuration. Note that foo=bar will be removed
    # because it is not specified here.
    kn service apply random --image rhuss/random:1.0 --env ying=yang
    

kn service import

  • kn service importkn service export 的对应命令,允许您导入服务和所有已导出活动的修订。活动修订是指在流量拆分中引用的修订。

  • 此命令仍然标记为实验性,并且导入中存在一些已知问题,例如修订的 generation 如何创建。请告诉我们如何改进对此功能的支持。

其他 CLI 功能

还添加了以下其他功能

  • 已将 arm64 版本添加到发布的工件中,以及一个 checksum.txt,其中包含所有工件的 sha256sum。
  • 已为 --sink 参数添加了 channel: 前缀,以便可以通过名称直接寻址通道。
  • 别名现在在帮助信息中正确显示
  • 作为新列表过滤器 WithLabel()Client API,可用于列出服务。

运算符 v0.19

新的运算符现在可以部署服务和事件组件的 v0.19 新版本。

🐞 错误修复 - 向字段 spec.version 添加验证。 (#319) - 添加对 spec.version 的 major.minor 格式的支持。 (#326) - 删除 0.17.0 的不正确预作业。 (#325)

🧹 清理 - 更新到 pkg test/KubeClient 更改。 (#304) - Lint:之前的条件包含 return 语句,弹出 else 语句。 (#305) - 删除 istio 依赖关系并替换为非结构化操作。 (#311) - 删除对 pkg/errors 的依赖关系。 (#310) - 验证 major.minor 作为自定义清单的版本匹配机制。 (#320) - 对脚本使用 hack 存储库。 (#333) - 使用新的 update_deps 脚本。 (#332)

感谢 v0.19 的贡献者

了解更多

Knative 是一个开源项目,社区中的任何人都可以使用、改进和享受它。我们很乐意您加入我们!

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