根据Nginx Ingress指标对指定后端进行HPA
内容提要
本文介绍了使用Nginx Ingress指标对指定后端进行HPA的方法,实现基于不同域名和路径的请求量弹性指定后端工作负载。操作步骤包括创建弹性目标工作负载、查询指标、创建apiservices资源、添加externalRules规则、重启服务、创建HPA规则等。通过压测验证弹性效果。
关键要点
-
Nginx Ingress流量通过域名和路径转发至不同应用,CPU和内存不是性能瓶颈时可配置HPA。
-
环境准备包括部署nginx-ingress和kube-prometheus-stack,确保kubectl命令可用。
-
HPA规则中的scaleTargetRef和describedObject字段无法指定命名空间,需在同一命名空间内。
-
创建弹性目标工作负载、服务和Ingress以支持HPA。
-
查询nginx_ingress_controller_requests指标以确保正常。
-
创建external类型的apiservices资源,状态为false是正常现象,添加externalRules后变为true。
-
将externalRules添加到adapter的configmap中,并重启prometheus-adapter服务。
-
重启后等待一段时间,检查指标是否正常。
-
创建HPA规则,设置最小和最大副本数,以及外部指标的筛选条件。
-
通过压测验证弹性效果,确保HPA正常触发。
延伸问答
如何使用Nginx Ingress指标配置HPA?
可以通过nginx_ingress_controller_requests指标为应用配置HPA,以实现基于不同域名和路径的请求量弹性。
在配置HPA时需要注意哪些命名空间问题?
HPA规则中的scaleTargetRef和describedObject字段无法指定命名空间,需在同一命名空间内。
创建HPA规则时需要设置哪些参数?
需要设置最小和最大副本数,以及外部指标的筛选条件。
如何验证HPA的弹性效果?
可以通过压测访问域名和路径,观察是否正常触发弹性来验证HPA效果。
在创建external类型的apiservices资源时,状态为false正常吗?
是的,创建后apiservices的状态为false是正常现象,添加externalRules后状态会变为true。
环境准备中需要部署哪些组件?
需要部署nginx-ingress和kube-prometheus-stack,确保kubectl命令可用。