求助:最新稳定版Nginx Ingress Controller的limit-rps注解不生效
Nginx Ingress
limit-rps注解未生效的解决方法 1. 确认限流模块与基础配置
- 检查Nginx Ingress Controller的Pod日志,搜索
limit_req关键词,确认该模块已正常加载。最新稳定版默认启用该模块,但如果存在自定义Nginx模板,需确保模板中包含限流区域(limit zone)的定义。 - 验证Controller版本兼容性:执行
kubectl exec -it <ingress-controller-pod-name> -n <controller-namespace> -- nginx -v,确认使用的版本确实支持limit-rps注解(最新稳定版均支持)。
2. 排查注解配置与优先级冲突
- 确认注解无拼写错误,你当前配置的
nginx.ingress.kubernetes.io/limit-rps: "1"格式正确(字符串值加引号),无笔误。 - 检查全局限流配置:查看Ingress Controller的ConfigMap,若其中设置了
limit-rps字段,全局配置会覆盖Ingress资源级别的注解。执行kubectl get configmap <nginx-ingress-config-name> -n <controller-namespace> -o yaml,若存在该字段则删除或调整。 - 确认无其他冲突注解:若同时配置了
limit-rpm(每分钟请求数),两者可共存,但需确保逻辑符合预期;若存在其他限流相关注解,需排查是否存在覆盖逻辑。
3. 验证Nginx配置生成情况
- 进入Ingress Controller的Pod,查看生成的Nginx配置文件(通常位于
/etc/nginx/conf.d/下对应Ingress的配置文件),搜索limit_req指令,确认是否存在针对test.com的限流规则,示例如下:limit_req zone=default-rps burst=0 nodelay; - 若未生成对应规则,尝试重启Ingress Controller的Pod,触发配置重新生成:
kubectl rollout restart deployment <nginx-ingress-controller-deployment> -n <controller-namespace>。
4. 实际测试限流效果
- 使用压测工具验证,例如用
ab发送批量请求:ab -n 10 -c 2 http://test.com/ - 正常情况下,超过1rps的请求应返回429/503状态码;若全部返回200,需回到前面步骤重新排查配置逻辑。
内容的提问来源于stack exchange,提问作者Ravindra
相关产品推荐
相关产品推荐

