Knative Serving 0.11.0 版本变更

简介:

前言

Knative Serving v0.11.0 版本已经于 12 月 11 号正式发布。本次版本继续优化activator负载均衡能力,这次解决了并发数为10的场景,测试结果显示大部分请求在0.14秒完成,具体细节见以下内容。

主要变更

改进在低并发下的负载均衡

点我查看设计文档(google docs)
回顾上一个版本的变更,为了让activator把请求更均匀发送到pod上,引入了two random choices算法,并且为了解决多个activator的场景,把pod分配给特定的activator来处理。举个例子,假如有2个activator,5个pod,每个activator会分配到2个pod,最后剩下的按顺序分配,也就是第一个activator负责3个pod,第二个负责两个pod。这样实现后,发现如果并发数是1的时候效果不错,但并发数是10的时候效果不好。

目前的问题是如何处理剩下的pod如何平均分配流量。作者新的方案是去掉了two random choices算法,改用knative里面的breaker来实现,通过设置容量达到平分的目的。具体算法如下,假设有2个activator,5个pod,并发数是10,则每个activator的容量为 5 * 10 / 2 = 25。另外每个pod的podIPTracker里面有个breaker,根据之前的分配策略,每个activator独自向两个pod发送,podIPTracker里面的breaker容量都是10,但还剩下一个pod,把这个pod的容量设置为10/2=5,也就是说对于这个pod,每个activator最多同时给它5个并发。

这次改动后,每次请求先判断这个pod的容量是否满了,如果没满会先发送给它处理,这样会让请求优先塞满第一个pod,才会到第二个pod。作者认为这样后面缩容时,可以针对空闲的进行缩容。

网络接入层引入Kourier

Kourier是第一个Knative原生的入口实现,直接调和knative网络层CRD到Envoy里面。它作为istio的替换品之一,更轻量的提供入口流量路由服务,目前在0.11版本中把Kourier作为Knative e2e集成测试的一个选项。

其他变更

扩缩容

  • 减少K8s services的数量,每个Revision3个减为2个,metrics service 改用 private service
  • 修复livenessProbe导致无法缩容的问题
  • 修复Target annotation 可以覆盖默认值
  • 在HPA的PodAutoscalers也汇报desired/actual指标

核心API

  • 改进镜像tag解析的错误信息
  • 允许在PodSpec使用 imagePullSecrets 
  • 分离 默认值和校验的webhooks

网络

  • 兼容 Istio 1.4,这个版本引入了正则表达式的长度限制 #6058
  • 集成 istio/client-go #5969
  • 当VirtualService调解失败后,更新LoadBalancerReady condition #6048
  • 端口命名方式遵循Istio约定 #5070

参考

文章来自于对knative release note的翻译和解读

目录
相关文章
|
Kubernetes 监控 测试技术
knative serving 组件分析
knative serving 组件分析。
320 0
|
存储 API
Knative Eventing 0.15.0 版本变更
前言 Knative Eventing 0.1.15 版本在5月27日已经发布,来看看它的变化。 注意 需要使用迁移工具把存储版本由v1alpha1 更新为 v1beta1,如果使用了Broker.Spec.ChannelTemplateSpec,需要在升级前先更新为兼容的配置。
1162 0
|
Kubernetes 负载均衡 网络协议
解读 Knative Serving v0.15.0 版本特性
Knative 0.15.0 版本已于近期发布,针对 Knative Serving v0.15.0 版本对这些新功能特性进行解读,让你快速对新版本特性有所深入了解。
1614 0
|
存储 监控 Kubernetes
|
消息中间件 Kafka API
解读 Knative Eventing v0.14.0 版本特性
Knative Eventing v0.14.0 版本已于近期发布,新版本带来了哪些特性呢?本文会进行相关的解读
1437 0
|
存储 Kubernetes API
|
Kubernetes 网络协议 Java
|
Kubernetes 负载均衡 Perl
knative serving 0.10.0 版本变更
前言 Knative Serving v0.10.0 版本已经于 10 月 29 号正式发布。本次版本主要优化了activator负载均衡等能力,具体细节见以下内容。 主要变更 Activator半理想的负载均衡优化 这部分的设计文档见  Better Load Balancing in Activator (google doc)在对activator负载均衡的优化中,设置 containerConcurrency: 1 后因为排队导致的错误已经解决。
1263 0
解读 Knative Eventing v0.10.0 最新版本特性
Knative Eventing v0.10.0 版本已经于 10 月 29 号正式发布。本次发布继续围绕完善 Eventing 中相关功能展开。本篇文章通过解读这些功能特性,让你快速对 v0.10.0 版本有所了解。
2641 0
|
API Perl
Knative Serving 0.9 版本变更
前言 Knative Serving 0.9版本在9月17日已经发布,这是Serving v1正式版的第二个候选版本,目前还在和社区讨论Serving在限制条件下如何生产可用,还有怎样协调剩下的部分。
1176 0