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

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

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

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


Knative 灰度发布和自动(二)


六、自动弹性 HPA

HPA 能够通过监测到 CPUmemory 版本的使用率,修改相应的 pod 数量,并扩容。在 connect 中集成了 HPA 的能力,通过 outset 的 class 可以选择 HPA 的相应的类型,然后可以设置相应的 CPU 以及 memory 的指标信息。

 

七、如何自定义扩缩容插件。

除了 KPA 和 HPA 在实际运用中,会经常遇到不同的一些指标收集或者扩充策略,这时候就需要自定义一个扩缩容插件,只需要进行一个指标的采集,然后调整采集到指标之后,计算中相应的 pod 实例数,然后修改相应的信息,最终实现一个自定义扩缩容的能力。


八、实例演示

分别介绍一下灰度发布以及自动扩缩容的一个实例。

进入一个终端模式。

首先演示一下灰度发布,这里会创建两个coffee的一个实例,分别对应v1和v2版本。v1版本中打一个 hello coffee v1,然后在v2版本中打一个v2。

首先创建v1版本的一个 coffee。

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#ls coffee-v1.yaml coffee-v2.yaml test.sh

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]# kubectl apply-f coffee-v1.yaml

service,serving.knative.dev/coffee created[root@iZbp1djyqnxhjfv9h9s0edZ serverles5]#

创建完成,观察一个 pod 的启动情况:[root@iZbp1djyqnxhjfv9h9s0edZ ~]# watch "kubectl get pod"然后可以看到 pod 已经在启动中了。这里启动完服务之后,会做一次访问,访问一下当前的服务是否是v1。

可以看到当前是一v1版本的打印:

[root@iZbpldjyqnxhjfv9h950edZ ~]# cd serverless/[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#ls coffee-v1.yaml coffee-v2.yaml test.sh

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#ls coffee-v1.yaml coffee-v2.yaml test.sh

Troot@iZbpldiyqnxhifv9h9s0edZ serverless]# curl -H"hast: coffeedefault.example com"http://60.205.218.122 chtml>

<head><title>503 Service Temporarily Unavailable</title></head><body bgcolor="white">

<center><h1>503 Service Temporarily Unavailable</h1></center><hr><center>nginx</center></body></html>

Troot@iZbp1diyqnxhifv9h9s0edZ serverless]# curl -H"host:coffee.default.example com"http://60.205.218.122 Hello coffee v1!

[root@iZbp1djyqnxhifv9h9s0edZ serverless7# curl -H "host: coffee.default.example. comhttp://60.205.218.122 Hello coffee v1!

[root@iZbpldiyqnxhjfv9h9s0edZ serverless]# curl -H"host:coffee.default.example com"http://60.205.218.122 Hello coffee v1!

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#

做一次版本的一个变更,换到v2版本。复制一下当前revision,进行v2版本的一个创建,同时会将v2版本和v1版本设置不同的流量比例,这里为了方便区分,可以分别设置50%即可。

[root@iZbp1djygnxhify9h9s0edZ serverles5]#l5 coffee-v1.yaml coffee-v2.yaml test.sh

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]# kubectl apply-fcoffee-v1yaml service.serving.knative.dev/coffee created

[root@iZbp1djyqnxhjfv9h9s0edZserverless]#ls

coffee-v1.yomlcoffee-v2yaml test.sh

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]# kubectl get revision

coffee-9hng7 coffee coffee-9hng7 1 True

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#ls coffee-v1yaml coffee-v2.yaml test.sh

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]#vicoffee v2.yaml

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]# kubectl apply-fcoffee-v2.yaml

service.serving.knative.dev/coffee configured[root@iZbp1diyqnxhjfy9h9s0edZ serverless]#

因为到时候可以看到50%的一个流量是v2版本,都会一个随机的出现。终端上有一个显示就是一个多了一个波段,这是因为这个时间阶段没有访问,送入了一个保留实例。

把新的版本做出一次变更,更新的v2版本创建了,可以看到v版本的pod开始启动,会访问到v1版本上,并且访问的过程中,可以对之前的一个做一次算是复习。访问之后,会通过线索保留实例,介绍到请求之后,同时会创建一个正常的实例出来。

v2版本起来后,看一下是否可以访问到v2版本, 灰度50%,发现打印v2版本没有问题.

将当前的比例调整一个100%,也就是把新的VR版本调分调成100%,再观察一下流量的一个分配情况。改traffic的值,新的版本改成100%,原来版本是让它设置为0,接着访问,会发现都会到v2版本上去,这就是实现了一个从通过流量比例进行一个灰度发布的流程。

现在已经是v2版本了,接下来会做一个压测,当前默认的是使用基于流量的KPA的一个策略。

[root@iZbp1djyqnxhjfv9h9s0edZ serverless]# hey-z 30s -c 90 --host"coffee,defoult example.com”"http://60.205.218.122/?sleep=100"

可以看到新的一个 VR版本。

NAME READY STATUS RESTARTS AGE 78s

coffee-9hng7-deployment-reserve-64954c7476-b4jwm 2/2 Running

coffee-new-deployment-7fd9ffffd7-2km6l 0/2 Pending 15s

coffee-new-deployment-7fd9ffffd7-2nd29 0/2 Pending 15s

coffee-new-deployment-7fd9ffffd7-4zvrr 2/2 Running 3m35s

coffee-new-deployment-7fd9ffffd7-9ct51 0/2 Pending 25s

caffee-new-deplayment-7fd9ffffd7-bg6x7 0/2 Pending 25s

caffee-new-deplayment-7fd9ffffd7-d4pfg 0/2 Pending 23s

coffee-new-deployment-7fd9ffffd7-qdgsh 0/2 Pending 25s

coffee-new-deployment-7fd9ffffd7-t7l5 0/2 Pending 25s

coffee-new-deployment-7fd9ffffd7-td4xb 0/2 Pending 15s

这个场景其实相当于有新的一个业务过来,根据流量做了一个自动弹性的能力。

 

九、总结

主要内容是基于流量的灰度发布以及增弹性,自动弹性包括平台中基于流量请求的 KPA,以及基于 CPU memory 的一致 KPI 和 HPA,同时也介绍了如何自动扩缩容的一个插件。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
机器学习/深度学习 数据可视化 计算机视觉
【残余注意力】简单且有效的多标签识别方法
【残余注意力】简单且有效的多标签识别方法
232 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1023 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1720 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
662 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
626 14