k8s群集之动态扩缩容——HPA
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,博文大纲:一、HPA介绍二、实现pod扩容与缩容的示例一、HPA介绍HPA的全称为Horizontal Pod Autoscaling,它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
安徽在线网络技术咨询项目
网络安全微信公众号有哪些
杭州西安服务器操作说明
网络安全态势感知三个层次
服务器网络连接是什么意思
数据库asp技术
浙江涉农信用信息数据库
网络安全和刑事科技哪个好
方舟生存进化一登录服务器就崩溃
南信大网络安全警企合作实验室
lsv软件开发
管线数据库更新成果
服务器可以装win7操作系统吗
浙江机械软件开发行业
如何下载计算机网络技术的题库
网络技术拼音
本科毕业软件开发工资
xp服务器怎么进入
国内著名的软件开发公司
校园网无法解析服务器的dns地址
app软件开发培训机构
软件开发工程师抗疫情
金仓数据库兼容mysql
恐龙岛巨兽岛服务器搭建
安全教育平台消防网络安全知识
花雨庭的服务器地址H2
spring 数据库查询
软件开发报告文档
国家资助中心数据库
企业之间使用什么网络技术