在腾讯云容器服务TKE中利用HPA实现业务的弹性伸

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:jokeyli网络

小提示:您能找到这篇{在腾讯云容器服务TKE中利用HPA实现业务的弹性伸}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的在腾讯云容器服务TKE中利用HPA实现业务的弹性伸内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

概述

< ">Kubernetes Pod水平自动扩缩(Horizontal Pod Autoscaler,以下简称HPA)可以基于CPU利用率、内存利用率和其他自定义的度量指标自动扩缩Pod的副本数量,以使得工作负载服务的整体度量水平与用户所设定的目标值匹配。本文将介绍和使用腾讯云容器服务TKE的HPA功能实现Pod自动水平扩缩容。

使用场景

< ">HPA自动伸缩特性使容器服务具有非常灵活的自适应能力,能够在用户设定内快速扩容多个Pod副本来应对业务负载的急剧飙升,也可以在业务负载变小的情况下根据实际情况适当缩容来节省计算资源给其他的服务,整个过程自动化无须人为干预,非常适合服务波动较大,服务数量多且需要频繁扩缩容的业务场景,如:电商服务、线上教育、金融服务等。

原理概述

< ">Pod水平自动扩缩特性由Kubernetes API资源和控制器实现。资源利用指标决定控制器的行为,控制器会周期性的根据Pod资源利用情况调整服务Pod的副本数量,以使得工作负载的度量水平与用户所设定的目标值匹配。其扩缩容流程和说明如下:

提示:目前这一功能处于beta版本,且Pod自动水平扩缩不适用于无法扩缩的对象,比如DaemonSet资源。

< ">HPA Controller:控制HPA扩缩逻辑的控制组件。

< ">Metrics Aggregator:度量指标聚合器。通常情况下,控制器将从一系列的聚合API(metrics.k8s.io、custom.metrics.k8s.io和external.metrics.k8s.io)中获取度量值。metrics.k8s.io API通常由Metrics服务器提供,社区版可提供基本的CPU、内存度量类型,相比于社区版,TKE使用自定义Metrics Server采集可支持更广泛的的HPA的度量指标触发类型,提供包括CPU、内存、硬盘、网络和GPU相关指标,了解更多详细内容参阅TKE自动伸缩指标说明[1]。

提示:控制器也可以直接从Heapster获取指标。但自Kubernetes 1.11起,从Heapster获取指标特性的方式已废弃。

< ">HPA计算目标副本数算法:TKE HPA扩缩容算法请参考工作原理[2],更多详细算法请参阅算法细节[3]。

前提条件

< ">已注册腾讯云账户[4]。

< ">已登录腾讯云容器服务控制台[5]。

< ">已创建TKE集群。关于创建集群,详情请参见创建集群[6]。

< ">< font-size: 18px; color: rgb(0, 112, 192);">操作步骤

< ">第1步:部署测试工作负载

< ">以Deployment资源类型的工作负载为例,创建一个单副本数,服务类型为WEB服务的"hpa-test"工作负载,在TKE控制台创建Deployment类型工作负载方法请参阅Deployment管理[7]。本示例创建结果如下图所示:

< ">第2步:配置HPA

< ">在TKE控制台为测试工作负载绑定一个HPA配置,关于如何绑定配置HPA请参阅HPA操作步骤[8],本示例配置当网络出带宽达到0.15Mbps(150Kbps)时触发扩容的策略。

< ">第3步:功能验证

< ">在集群中启动一个临时Pod对配置的HPA功能进行测试(模拟客户端):

kubectl run-it--image alpine hpa-test--restart=Never--rm/bin/sh

< ">在临时Pod中运行下面命令短时间内模拟大量请求访问"hpa-test"服务使出口流量带宽增大:

#hpa-test.default.svc.cluster.local为服务在集群中的域名,当需要停止脚本时按Ctrl+C即可

while true;do wget-q-O-hpa-test.default.svc.cluster.local;done

< ">在测试Pod中执行模拟请求命令后,通过观察下图中工作负载的Pod数量监控可以看到,在16:21分时工作负载扩容副本数量至2个,由此可推断出已经触发了HPA的扩容事件。

< ">再通过下图的工作负载的网络出口带宽监控可以看出在16:21右左时网络出口带宽增至大概199 Kbps,已经超过HPA设定的网络出口带宽目标值,进一步证明此时触发HPA扩缩容算法[9]扩容了一个副本数来满足设定的目标值,故工作负载的副本数量变成了2个。



注意:HPA扩缩容算法[10]不只以公式计算维度去控制扩缩容逻辑,而会多维度去衡量是否需要扩容或缩容,详情可以参阅算法细节[11],所以在实际情况中可能和预期会稍有偏差。

< ">接下来模拟缩容过程,在16:24左右手动停止执行模拟请求的命令,从下图监控看到此时网络出口带宽值下降到扩容前位置,按照HPA的逻辑,此时已经满足工作负载缩容的条件。

< ">但从下图工作负载的Pod数量监控可以看出,工作负载在16:30分时才触发了HPA的缩容,这是因为触发了HPA缩容有默认5分钟的容忍时间的算法,以防止度量指标短时间波动导致的频繁的扩缩容,详情请参阅冷却/延迟支持[12]。从下图可以看出工作负载副本数在停止命令5分钟后按照HPA扩缩容算法[13]缩容到了最初设定的1个副本数。



< ">当TKE发生HPA扩缩容事件时,会在对应的HPA实例的事件列表展示,如下图所示。需要注意的是事件通知列表的时间分为“首次出现时间”和“最后出现时间”,“首次出现时间”表示相同事件第一次出现的时间,”最后出现时间”为相同事件出现的最新时间,所以从下图事件列表“最后出现时间”字段可以看到本示例扩容事件时间点是16:21:03,缩容怎样往网上发布新闻事件时间是16.29:42,时间点与工作负载监控看到的时间点相吻合。

< ">此外,工作负载事件列表也会记录HPA发生时工作负载的增删副本数事件,从下图可以看出工作负载扩缩容时间点与HPA事件列表的时间点也是吻合的,增加副本数时间点是16:21:03,减少副本数时间点是16:29:42。

总结

< ">在本示例中主要演示了TKE的HPA功能,使用TKE自定义的网络出口带宽度量类型作为工作负载HPA的扩缩容度量指标,当工作负载实际度量值超过HPA配置的度量目标值时,HPA根据扩容算法计算出合适的副本数实现水平扩容,保证工作负载的度量指标满足预期,保障工作负载健康稳定运行;当实际度量值远低于HPA配置的度量目标值时,HPA会在容忍时间后计算合适的副本数实现水平缩容,适当释放闲置资源,达到提升资源利用率的目的,并且整个过程在HPA和工作负载事件列表都会有相应的事件记录,使整个工作负载水平扩缩容全程可追溯。

参考资料

[1]TKE自动伸缩指标说明:https://cloud.tencent.com/document/product/457/38929

[2]工作原理:https://cloud.tencent.com/document/product/457/37384#.E5.B7.A5.E4.BD.9C.E5.8E.9F.E7.90.86

[3]算法细节:https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details

[4]注册腾讯云账户:https://cloud.tencent.com/register

[5]腾讯云容器服务控制台:https://console.cloud.tencent.com/tke2

[6]创建集群:https://cloud.tencent.com/document/product/457/32189

[7]Deployment管理:https://cloud.tencent.com/document/product/457/31705

[8]HPA操作步骤:https://cloud.tencent.com/document/product/457/37384#.E6.93.8D.E4.BD.9C.E6.AD.A5.E9.AA.A4

[9]扩缩容算法:https://cloud.tencent.com/document/product/457/37384#.E5.B7.A5.E4.BD.9C.E5.8E.9F.E7.90.86

[10]扩缩容算法:https://cloud.tencent.com/document/product/457/37384#.E5.B7.A5.E4.BD.9C.E5.8E.9F.E7.90.86

[11]算法细节:https://kubernetes.io禁毒宣传片ppt/zh/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details

[12]冷却/延迟支持:https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-auto危机公关腾讯王者荣耀事件scale/#冷却-延迟支持

[13]扩缩容算法:https://cloud.tencent.com/document/product/457/37384#.E5.B7.A5.E4.BD.9C.E5.8E.9F.E7.90.86

在腾讯云容器服务TKE中利用HPA实现业务的弹性伸

上一篇:Yahoo JAPAN跨境电子商务平台开店,入驻有些什么
下一篇:华为后台某应用商品展示价格币种随其他应用配


版权声明:以上主题为“在腾讯云容器服务TKE中利用HPA实现业务的弹性伸"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    在腾讯云容器服务TKE中利用HPA实现业务的弹性伸
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“在腾讯云容器服务TKE中利用HPA实现业务的弹性伸”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通在腾讯云容器服务TKE中利用HPA实现业务的弹性伸的相关事宜。

关键词:在腾讯云容器服务TKE中利

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号