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 ,同时也介绍了如何扩展自定义扩缩容的插件。

相关文章
|
资源调度 监控 关系型数据库
在Flink CDC作业提交过程中,出现超时问题可能与多种因素有关
【2月更文挑战第8天】在Flink CDC作业提交过程中,出现超时问题可能与多种因素有关
637 11
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
2232 2
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
1199 1
|
数据可视化 前端开发 JavaScript
可视化数据结构——让你的树跃然纸上
可视化数据结构——让你的树跃然纸上
|
前端开发
css【详解】cubic-bezier()函数
css【详解】cubic-bezier()函数
439 2
|
Linux 测试技术 API
xenomai内核解析之xenomai初探
本文是关于Xenomai实时操作系统的初探,Xenomai是一个实时性增强的Linux系统,它通过实时内核和用户空间库提供硬实时性能。Xenomai 3主要由实时内核Cobalt、实时驱动模型RTDM、用户空间库libcobalt等组成,支持两种构建实时系统的方式:Cobalt和Mercury。Cobalt在内核空间与标准Linux内核并存,通过I-Pipe处理中断,确保实时任务的执行。Mercury则是通过修改Linux内核实现。
1747 0
xenomai内核解析之xenomai初探
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
1907 10
|
存储 弹性计算 缓存
ecs使用ESSD云盘或SSD云盘
阿里云ECS中,ESSD和SSD云盘提供高性能存储。SSD云盘基于SSD技术,适合高I/O需求场景。ESSD云盘则采用NVMe SSD和智能缓存,优化低延迟和高随机读写性能,尤其适合数据库、实时交易等对延迟敏感的应用。若业务需要极致存储性能,ESSD是优选,但选择应基于实际需求、成本和性能指标。
451 3
|
Linux Shell iOS开发
centos7 如何安装与使用 Anaconda
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大,如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。 Anaconda 是跨平台的,有 Windows、MacOS、Linux 版本。
9421 1
centos7 如何安装与使用 Anaconda