k8s的hpa

发布时间:2024年01月23日

1、hpa(horizontal pod autoscaling):pod的水平自动伸缩,这是k8s自带的模块,hpa控制副本的数量以及控制部署pod

1)pod占用CPU的比率到达一定的阀值,会触发伸缩机制
2replication 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。