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

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

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

课程地址:https://developer.aliyun.com/learning/course/291/detail/3434


Knative 灰度发布和自动弹性(一)


 内容介绍

.前言

.service 服务的生命周期

.基于流量的灰度发布的做法

.自动弹性

.KPA 的纵横机制

.自动弹性 HPA

.如何自定义扩缩容插件

.实例演示

.总结

 

一、前言

Connective 的冷启动,是社区的 connective 从0~1冷启动的问题,主要是由于电路过长,请求延迟的原因。

另外pod的启动也很耗时。针对这些问题,使用保留实例,平衡成本的方法解决冷启动的问题,

 

二、service 服务的生命周期

作为 Service 的 Route,就离不开按需分配资源的能力。Connective 提供了基于流量的自动扩容能力,可以根据应用的请求,在高峰时刻自动控融实例,暂流量减少时自动缩容。此外肯 Connective 还提供了基于流量的灰度发布能力,可以根据流量百分比进行灰度发布。

service 是直接面向开发者操作的资源对象,负责对 route 和 configuration 进行管控,一个 service 分别对应一个 Route 和一个 configuration。

每次 service 变化需要创建新的 word 的就会更新,然后每次更新都会创建一个唯一的 revision,configuration 可以认为是版本控制器,负责管理多个 revision 版本,Route 主要负责流量管理,控制流量分发到不同的人物身上,并且支持按照百分比进行流量分发。可以通过在 traffic 中对不同的设置不同流量比例即可控制流量分发。例如可以对一个新的 revision,设置90%,revision,通过 revision 可以实现历史版本追踪,以及灰度发布过程中进行回轨等操作。


三、基于流量的灰度发布的做法

假如一开始创建了个 v 版本的 revolution,这时候如果有新的版本变更,那么只需要更新 surface 中的 congratulation,就可以创建出v2版本。

然后可以通过route对v1,v2是指不同流量的比例灰度,这里v1是70%,v2是30%,那么流量会按照7:3这个比例分发到这两个版本上,一旦新的v2版本验证没有问题,接下来就可以通过调整流量比例,继续灰度,直到新版本 VR 达到100%。在这个灰度过程中,一旦发现新版本有异常,可以调整通过调整流量比例进行回归操作。除此之外,可以打一个 tag,通过tag的URL进行单独对 revision 版本进行测试,这个测试过程不会影响对正常流量的访问。


四、自动弹性

image.png

Knative 提供基于流量的自动扩容 KPA 的能力,以及基于 CPU 和 memory 的 HPAA 的弹性能力。除此以外,Connective 还提供了弹性的扩展能力。可以基于不同的指标,自定义弹性的实现。设备中,默认使用 KPA 上图,就展示了 Connective outset 的一个工作机制。Route 负责接入流量,Activator 负责做弹性的一个伸缩。当没有业务请求的时候会诉讼到0,诉讼到0后,Route 进来的请求会转到 activity 的上。

当第一个请求进来之后,activity 会保持住当前的链接,然后通知Activator来迅速扩容,Activator 会把第一个 pod 控制完成之后,等当前的 pod ready, outset,activity 会把相应的流量转发到这些 ready 的 pod 上,从而做到了诉讼到0也不会损失流量的目的。当后续有流量进来以后,流量会直接到 Route 到 pod 上,这时候 outset 会直接采用 put 中的指标,根据这个指标进行一到n的扩缩容操作。


五、KPA 的纵横机制

image.png

第一行 KPA 控制器,在 KPA 主要包括两个资源,Decider 等于以及 metiric CRD 以及一个 Scale 的操作。

通过 Decider 获取扩速融,minister 主要采集指标的一些资源,通过 mutual 会采集到pod指标。

第二行根据指标计算 pod,Decider 创建之后会创建出来一个定时器,该定时器会默认间隔两秒,然后计算 pod 的指标,那么这个指标是如何获取的,这就涉及到第三行指标采集,这里是通过两种方式收集 pod 的指标。一是 POS 指标收集,这里通过暴露指标接口,向外部服务,如 Activator 可以调用该接口,直接推送密推和信息。第二是拉获取指标,通过服务接口,遵循相关的指标进行收集。

第一纵可以认为是0~1的扩容,第一步会进行指标采集,在 put 数为0的时候,流量请求通过为 pod 模式,这时候流量是通过 Activator 的进行接管的,在 Activator 中会根据请求的指标信息,调用相关的 KPA 提供的指标接口,将指标信息发送给 KPA 中的 controller。第二步,根据指标计算 pod 数,根据 POS 或者的指标数计算出期望的 pod 得数,然后修改第四个期望的相应的 pod 值,然后触发,做重新的一个调和,最后进行扩容。在 KPA control 中会执行调和的方法,通过对当前 revision 执行 Scale 进行扩容完成之后,然后切换成一个 Scale 模式,这就是最终实现了一个0~1的扩容操作。

然后第二纵是一到 n 的扩容,第一步采集指标,但是这里是通过 pod 的方式,所有的 pod 的 pass9090端口,然后获取相应的指标信息。第二步计算指标计相应的pod数,这个拿到指标信息之后,可以计算出期望的 pod 数,同样的修改 Decider 的期望值,然后最后也是进行一步相应的扩容操作,重新调和相应的 revision 信息,然后最终实现一到 n 的一个扩容操作。

这就是介绍的一个通过纵横方式分析了一下 KPA 的一个实现机制

相关文章
|
11月前
|
人工智能 弹性计算 运维
操作系统控制台,让运维更简单!
操作系统控制台初体验,运维智能666!
452 37
操作系统控制台,让运维更简单!
|
SQL 存储 PHP
解决高版本laravel/framework中SQLServer2008分页报错问题
【11月更文挑战第15天】在高版本的Laravel框架中,使用SQLServer 2008数据库进行分页操作时可能会遇到兼容性问题,导致报错。本文提供了两种解决方案:一是升级数据库版本至2012或更高,以提高对复杂查询的支持;二是通过自定义分页查询构建器,手动调整分页逻辑,使其适应SQLServer 2008的特性。具体实施步骤包括备份数据、安装新数据库版本、恢复数据,或创建自定义分页查询类并在模型中使用。这些方法能有效解决分页报错问题。
163 3
|
负载均衡 Java 开发者
Ribbon框架实现客户端负载均衡的方法与技巧
Ribbon框架为微服务架构中的客户端负载均衡提供了强大的支持。通过简单的配置和集成,开发者可以轻松地在应用中实现服务的发现、选择和负载均衡。适当地使用Ribbon,配合其他Spring Cloud组件,可以有效提升微服务架构的可用性和性能。
210 0
|
网络安全
socket服务部署到服务端后启动失败Cannot assign requested address: bind 的总结
socket服务部署到服务端后启动失败Cannot assign requested address: bind 的总结
848 0
|
网络协议 网络性能优化 数据安全/隐私保护
OSI(开放系统互连参考模型)知识点详细介绍!!
OSI(开放系统互连参考模型)知识点详细介绍!!
1098 0
|
SQL 缓存 Oracle
flask-SQLAlchemy连接数据库,并进行一些基本操作
flask-SQLAlchemy连接数据库,并进行一些基本操作
|
Java C# Android开发
Xamarin.Android | 界面跳转到手机自带的自启动管理界面,引导用户将APP加入自启动
为了帮助用户在使用 APP 时提高其稳定性和使用体验,有时候我们需要让安卓手机的界面跳转到手机自带的自启动管理界面,以此来引导用户将 APP 加入自启动,确保应用程序在后台运行时不被系统杀死,从而保证应用程序服务的稳定性和可靠性。同时,这也可以提高用户的使用体验,使用户能够更好地享受应用程序的功能和服务。
1055 0
Xamarin.Android | 界面跳转到手机自带的自启动管理界面,引导用户将APP加入自启动
|
Java 关系型数据库 MySQL
Java Web实战 | JDBC案例:实现图书管理
在项目开发中,应用程序需要的数据基本都是存放在数据库中的。对数据的管理过程离不开数据库。本文将运用JDBC API编写一个实现基本数据库操作(添加、修改、删除、查询)的应用程序,实现对图书信息的管理。 完成此项目的具体步骤如下。
538 0
Java Web实战 | JDBC案例:实现图书管理
|
移动开发 安全 算法
社交网络分析6:社交网络不实信息传播分析 、 ILDR(Ignorant-Lurker-Disseminator-Removed)传播动力学模型 、 平衡点 、 平衡点的稳定性分析 、数值仿真
社交网络分析6:社交网络不实信息传播分析 、 ILDR(Ignorant-Lurker-Disseminator-Removed)传播动力学模型 、 平衡点 、 平衡点的稳定性分析 、数值仿真
535 0