k8s群集之动态扩缩容——HPA
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,博文大纲:一、HPA介绍二、实现pod扩容与缩容的示例一、HPA介绍HPA的全称为Horizontal Pod Autoscaling,它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网加科技
科技赋能下的互联网金融
互联网金融监管科技数据
互联网 卓越科技
智网互联网科技
深圳齐家互联网科技
无线互联网科技
科技伦理 互联网公司
顺网科技2021年互联网排名
农村开互联网科技讲堂
科技与互联网的利与弊
互联网为啥属于高科技
厦门比较好的科技互联网公司
朱啸虎曾投资哪些互联网科技企业
科技互联网海报
互联网科技实习生岗位
西安有哪些互联网高科技企业
萌小萌互联网科技河南有限公司
互联网科技的前景
山东蛋芒互联网科技有限公司
互联网科技公司
互联网金融监管科技数据
互联网科技会
奇酷互联网科技公司
奇酷互联网络科技
四川狮子座互联网科技
顺网科技2021年互联网排名
厦门千工互联网科技有限公司
允成互联网科技有限公司融资
内蒙古九一互联网科技