根据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命令可用。

➡️

继续阅读