k8s群集之动态扩缩容——HPA
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,博文大纲:一、HPA介绍二、实现pod扩容与缩容的示例一、HPA介绍HPA的全称为Horizontal Pod Autoscaling,它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行
千家信息网最后更新 2025年01月31日k8s群集之动态扩缩容——HPA
博文大纲:
一、HPA介绍
二、实现pod扩容与缩容的示例
一、HPA介绍
HPA的全称为Horizontal Pod Autoscaling,它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行副本数的动态的扩容与缩容,以便减轻各个pod的压力。当pod负载达到一定的阈值后,会根据扩缩容的策略生成更多新的pod来分担压力,当pod的使用比较空闲时,在稳定空闲一段时间后,还会自动减少pod的副本数量。
若要实现自动扩缩容的功能,还需要部署heapster服务,用来收集及统计资源的利用率,支持kubectl top命令,heapster服务集成在prometheus(普罗米修斯) MertricServer服务中,所以说,为了方便,我这里基于prometheus服务的环境上进行部署HPA(动态扩缩容)的服务。
可以参考博文:k8s群集的三种Web-UI界面部署中的第三个部署Prometheus服务,来运行prometheus服务,如果不想部署prometheus,那么可以参考github上来单独部署heapster服务,
总言而之,要想实现pod副本数量的一个扩缩容,就必须保证,可以在master上执行下面的命令:
[root@master ~]# kubectl top node #查看节点的资源使用情况NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master 218m 10% 1362Mi 79% node01 113m 5% 1116Mi 64% node02 127m 6% 1287Mi 74%
二、实现pod扩容与缩容的示例
1、生成HPA控制器
#运行这个hpa-example,请求CPU的资源为200m,暴露一个80端口[root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80#当deployment资源对象的CPU使用率达到50%时,就进行扩容,最多可以扩容到10个[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10#上面的命令作用是生成了一个HPA的控制器,用于控制自动扩缩容[root@master ~]# kubectl get svc | grep php-apache #查看php-apache对应的svc群集IPphp-apache ClusterIP 10.99.60.48 80/TCP 15m[root@master ~]# kubectl get pod | grep php-apa #确定当前的pod数量php-apache-867f97c8cb-vw74k 1/1 Running 0 17m
2、模拟消耗php-apache的资源,并验证pod是否会自动扩容与缩容
新开启多个终端,对pod进行死循环请求,如下(如果你的系统资源比较充足,可以选择开启多个终端,对pod进行死循环请求,我这里开启了三个终端,同时请求php-apache的pod):
[root@master ~]# while true; do wget -q -O- 10.99.60.48; done #每个终端都执行此命令
[root@master ~]# kubectl top pod #可以通过此命令随时查看pod的负载情况NAME CPU(cores) MEMORY(bytes) load-generator-7d549cd44-xm98c 0m 1Mi php-apache-867f97c8cb-vw74k 208m 20Mi #也可以不定时的查看pod的数量是否有变化[root@master ~]# kubectl get pod #在运行死循环请求一段时间后,查看pod数量#可以发现php-apache的pod数量变成了10个,并且不会再增加,因为在上面的命令对其限制了最大数NAME READY STATUS RESTARTS AGEload-generator-7d549cd44-xm98c 1/1 Running 1 25mphp-apache-867f97c8cb-4r6sk 1/1 Running 0 19mphp-apache-867f97c8cb-4rcpk 1/1 Running 0 13mphp-apache-867f97c8cb-5pbxf 1/1 Running 0 16mphp-apache-867f97c8cb-8htth 1/1 Running 0 13mphp-apache-867f97c8cb-d94h9 0/1 ContainerCreating 0 13mphp-apache-867f97c8cb-drh62 1/1 Running 0 18mphp-apache-867f97c8cb-f67bs 0/1 ContainerCreating 0 17mphp-apache-867f97c8cb-nxc2r 1/1 Running 0 19mphp-apache-867f97c8cb-vw74k 1/1 Running 0 39mphp-apache-867f97c8cb-wb6l5 0/1 ContainerCreating 0 15m
当停止死循环请求后,也并不会立即减少pod数量,会等一段时间后减少pod数量,防止流量再次激增。
至此,pod副本数量的自动扩缩容就实现了。
-------- 本文至此结束,感谢阅读 --------
数量
服务
资源
命令
副本
终端
循环
时间
面的
控制
生成
运行
动态
三个
使用率
压力
多个
情况
控制器
示例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库的每一条记录包括
软件开发转售前工程师面试
软件开发前景好还是金融好
软件开发类职称包括哪些
查看电脑配置软件开发
轻量级开源数据库系统
网络安全用户能做什么
管理服务器工作
软件开发又快又好的解决之道
数据库为什么汉字是问号
1tb机械硬盘缓存服务器
陕西华表网络技术公司
根域名服务器网络安全
网络安全风险的升级
金山区企业网络技术咨询口碑推荐
搜狐网络安全构建和谐校园手抄报
腾讯云服务器哪个系统最好
广发银行软件开发招聘信息
唐人网络安全防护
服务器远程管理的作用
用什么软件开发混合app
sae 软件开发
财务系统数据库设计与实现
软件开发的注释
通州网络安全产业园轨道交通
数据库附加很长时间正常吗
中印网络技术
外包软件开发公司
软件开发每年维护费多少
数据库表的物理标识