根据Nginx Ingress指标对指定后端进行HPA
💡
原文中文,约5700字,阅读约需14分钟。
📝
内容提要
本文介绍了使用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命令可用。
➡️