k8s的hpa
发布时间:2024年01月23日
1、hpa(horizontal pod autoscaling):pod的水平自动伸缩,这是k8s自带的模块,hpa控制副本的数量以及控制部署pod
(1)pod占用CPU的比率到达一定的阀值,会触发伸缩机制
(2)replication controller(副本控制器):pod的副本数
(3)deployment controller(节点控制器):部署pod
2、hpa基于kube-controller-manager服务,周期性的检测pod的CPU使用率,默认是30秒
3、hpa和replication controller、deployment controller都属于k8s的资源对象,通过跟踪分析副本控制器和deployment的pod的负载变化,针对性的调整目标pod的副本数
①针对性——阀值:正常情况下,pod的副本数,以及达到阀值之后,pod的扩容最大数量
②metrics-server部署到集群中,对外提供度量的数据
4、hpa的实例
(1)每个节点部署安装包:docker load -i metrics-server.tar




(2)创建pod、hpa




(4)压力测试


①扩容





②缩容


5、hpa的规则:周期性的获取数据,缩容的机制问题
(1)定义pod时候必须要有资源限制,否则HPA无法进行监控
(2)扩容是即时的,只要超过阀值会立刻扩容,不是立刻扩容到最大副本数,会在最小值和最大值之间波动,如果扩容的数量满足了需求,不会再扩容
(3)缩容是缓慢的,如果业务的峰值较高,回收的策略太积极,可能会产生业务的崩溃,缩容的速度是比较慢的
6、pod的副本数扩缩容有两种方式(重)
(1)手动扩缩容,修改控制器的副本数
①命令行:kubectl scale deployment nginx --replicas=5
②修改yaml文件,apply -f部署更新
(2)自动扩缩容:hpa,hpa监控的是CPU
7、资源限制
(1)pod的资源限制
(2)命名空间的资源限制
①lucky-cloud项目——部署在test1的命名空间,如果lucky-cloud不做资源限制、或者命名空间不做限制,依然会占满所有集群资源
8、命名空间资源限制的实例
(1)命名空间资源限制resourcequota
①创建pod



②限制副本数




③其他命名空间的资源限制


④测试





⑤查看命名空间的资源限制:kubectl describe ns test1

(2)pod的资源限制limitrange(命名空间统一的资源限制)
①创建pod和limitrange限制




②压力测试


(3)小总结
①hpa:自动扩缩容
②命名空间的资源限制
resourcequota:对命名空间进行资源限制 |
limitrange:直接声明在命名空间中创建的pod、容器的资源限制(统一限制,所有pod都所这个条件的制约) |
9、总结
(1)pod的资源限制:resources→一般在创建时就声明好,必加选项
(2)命名空间的资源限制(resourcequota)→对命名空间使用CPU和内存一定会做限制
* 上述两个的限制的核心:防止整个集群的资源被一个服务或者一个命名空间占满
(3)命名空间的统一资源限制(limitrange)
(4)hpa:自动伸缩
文章来源:https://blog.csdn.net/weixin_48145965/article/details/135768533
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!