Knative 灰度发布和自动弹性|学习笔记(二)

简介: 快速学习Knative 灰度发布和自动弹性

开发者学堂课程【通过 Knative 轻松实现应用 Serverless 化交付:Knative 灰度发布和自动弹性】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/753/detail/13228


Knative 灰度发布和自动弹性

 

内容介绍:

五、KPA 的纵横实现

六、自动弹性-HPA

七、自动弹性-自定义扩缩容插件

八、示例演示

九、总结


五、KPA的纵横实现

image.png

//通过三横两纵,来分析 KPA 的实现机制。三横:首先 KPA 控制器,通过 revision创建 Pod,在 KPA 控制器上主要包括两个资源,decider 以及 metric,以及Scale,首先介绍这两个资源,decider 是做扩缩容角色的资源,通过 decider获取扩缩容 podmetric 主要采集指标的资源,通过 metric 采集到 pod 指标,Scale根据扩缩容的最小实例数,最大实例数,确定最终要扩容的pod实例数,修改deployment 的值,最终实现 pod 的扩缩容。第二横,根据指标计算 pod 数,关于 decider 的故事,decider 创建之后会创建一个定时器,该定时器会默认间隔两秒,计算 pod 的指标。指标是如何获取的呢?涉及第三行,指标采集,通过两种方式收集 pod 的指标,一是 push 指标收集,通过暴露指标接口,向外部服务如Activator 调用接口,直接推送信息。二是 pull 获得指标,允许相关的指标进行收集。接下来说两纵,第一纵可以认为是零到一的扩容,第一步会进行指标采集,在pod 数为零的时候,流量请求通过为模式,这时候流量通过 autoscaler 进行接管,在 autoscaler 中会根据请求的指标信息,调用相关的 KPA 指标接口,将指标信息发送给 KPA,第二步,根据指标计算 pod 数,修改 decider 中相应的 pod 值,触发进行重新调和,最后进行扩容。在 KPA 指标中,调和的方法,通过对 Revision 执行 scale 进行扩容,扩容完成之后,切换成模式,最终实现零到一的扩容操作。第二纵,一到 n 的扩容,第一步采集指标,获取相应的指标信息,第二步计算相应的 pod 数,拿到指标信息后,计算 pod 数,同样修改 decider 期望值,最后也是进行一步相应的扩容操作,在 KPA 中重新调整信息,最终实现一到 n 的扩容操作,这就是通过纵横实现 KPA 机制。

 

六、自动弹性-HPA

image.png

//利用 HPA 通过检测到 number 的使用率,修改相应数量进行扩容,设置 cpu number 的指标信息,这里不做过多解读。

 

七、自动弹性-自定义扩缩容插件

image.png

//接下来介绍如何自定义扩缩容插件,除了 KPA HPA,在实际运用中会遇到不同的指标收集扩缩容策略,这时候需要自定义一个扩缩容插件,Knative 中天然提供插件机制,需要做扩缩容操作,或者定义扩缩容组件的话,如何进行?关键两点,只需要指标采集,然后调整 Pod 实例数,修改相应的信息,最终实现自定义扩缩容能力。

 

八、示例演示

·灰度发布

image.png

·自动扩缩容

image.png

//分别介绍灰度发布和自动扩缩容的实例,接下来进行演示。首先演示下灰度发布,这里会创建两个实例,分别对应 ve vr 版本,ve 版本会打印一个 hello coffee ve,在 vr 版本打印 hello coffee vr 。首先创建 ve 版本的 coffee,创建完成后观察下 pod 的启动情况,可以看到 pod 在启动中,启动完服务后可以进行访问,访问当前的服务是否是 ve 版本,可以看到当前是ve版本的打印,接下来做一次版本的变更,变成 vr 版本,首先看当前 Revision 的名称,对相应的 Revision 做一个流量比例的设置,然后进行 vr 版本的创建,同时对 vr 版本和 ve 版本设置不同的流量比例。把新的版本做一次变更,新的 vr 版本创建完可以看到 vr 版本的 pod 开始启动,访问之后,通过保留实例,创建一个正常的实例出来。可以看到 ve vr 版本出现了,以50%的比例出现,发现当前比例没有问题,那么将比例调整到100%,把新的 vr 版本调成100%,可以观察一下流量的情况,只需要改一下 traffic 的值,新的版本改成100%,原来版本设置为零,发现都会打到 vr 版本上去,这就是灰度发布的流程。接下来会做一个压测,看一下当前 KPA 的扩缩容能力,当前默认基于流量的 KPA 策略,可以看到新的 vr 版本已经创建出来。演示到此结束。

 

九、总结

//今天讲了基于流量的灰度发布以及自动弹性,自动弹性介绍了 Knative 基于流量请求的 KPA 以及 HPA ,同时也介绍了如何扩展自定义扩缩容的插件。

相关文章
|
测试技术 微服务 负载均衡
微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。
2874 0
|
3月前
|
Kubernetes 监控 Java
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
402 0
|
4月前
|
Cloud Native 测试技术 开发者
阿里云服务网格ASM多集群实践(二):高效按需的应用多环境部署与全链路灰度发布
介绍服务网格ASM提出的一种多集群部署下的多环境部署与全链路灰度发布解决方案。
|
测试技术 Serverless vr&ar
Knative 灰度发布和自动弹性|学习笔记(一)
快速学习 Knative 灰度发布和自动弹性
Knative 灰度发布和自动弹性|学习笔记(一)
|
测试技术 Serverless vr&ar
Knative 灰度发布和自动弹性(一)|学习笔记
快速学习 Knative 灰度发布和自动弹性(一)
133 0
Knative 灰度发布和自动弹性(一)|学习笔记
|
Java 中间件 测试技术
全链路灰度新功能:MSE上线配置标签推送
微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用。除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求。
全链路灰度新功能:MSE上线配置标签推送
|
Kubernetes 负载均衡 监控
Kubernetes 实现灰度和蓝绿发布
Kubernetes 实现灰度和蓝绿发布
1192 1
|
Serverless 测试技术 vr&ar
Knative 灰度发布和自动弹性(二)|学习笔记
快速学习Knative 灰度发布和自动弹性(一)
101 0
|
Cloud Native Java 中间件
全链路灰度新功能:MSE 上线配置标签推送
本文介绍了全链路灰度场景给配置管理带来的问题,介绍了 MSE 针对这一场景的解决方案,并通过实践的方式展示了配置标签推送的使用流程。后续,MSE 还会针对配置治理做更多的探索,帮助用户更好地解决微服务配置管理中的难题,提高微服务应用的稳定性。
全链路灰度新功能:MSE 上线配置标签推送
|
测试技术 Serverless 开发者
SAE 应用分批发布与无损下线的最佳实践|学习笔记
快速学习 SAE 应用分批发布与无损下线的最佳实践
131 0
SAE 应用分批发布与无损下线的最佳实践|学习笔记