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 apply
和kn 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 apply
和kn 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 apply
与kn 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 import
是kn 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 的贡献者¶
- @antoineco
- @daisy-ycguo
- @danielhelfand
- @dprotaso
- @dsimansk
- @eclipselu
- @houshengbo
- @ian-mi
- @itsmurugappan
- @joshuawilson
- @julz
- @lberk
- @markusthoemmes
- @mattmoor
- @matzew
- @n3wscott
- @nak3
- @navidshaikh
- @pierDipi
- @rhuss
- @runzexia
- @sheetalsingala
- @slinkydeveloper
- @taragu
- @vaikas
- @whaught
- @yanweiguo
- @zroubalik
了解更多¶
Knative 是一个开源项目,社区中的任何人都可以使用、改进和享受它。我们很乐意您加入我们!
- 欢迎来到 Knative
- 入门文档
- 示例和演示
- Knative 会议和工作组
- 问题和疑问
- Knative 用户邮件列表
- Knative 开发邮件列表
- Twitter 上的 Knative @KnativeProject
- StackOverflow 上的 Knative StackOverflow
- Knative Slack
- YouTube 上的 Knative YouTube