背景

从网上找了各种资料,都没说清楚如何配置k8s上的nginx-ingress的qps
试了n小时之后,搞定了。如下:

步骤

第一步:找到你的value.yaml文件

第二步:里面有个 controller.config 配置,增加一个 http-snippet ,如下

controller:
  config: {
    http-snippet: limit_req_zone $binary_remote_addr zone=one_zone:10m rate=1r/m;
  }

gpt对这个参数的解释如下,记得修改你的rate,不要照抄!!!

limit_req_zone: 这是 Nginx 模块中用于配置请求速率限制的指令。
$binary_remote_addr: 这是一个变量,表示客户端的二进制形式的远程地址。它用于唯一标识每个客户端的地址。
zone=one_zone:10m: 定义了一个名为 “one_zone” 的区域,它用于存储客户端请求的状态信息。这个区域的大小为 10 兆字节。
rate=1r/m: 设置请求速率限制为每分钟 1 次。这意味着同一个客户端在每分钟内最多只能发起一次请求。
总体而言,这个配置的作用是限制每个客户端在每分钟内的请求次数,以防止滥用或过度使用服务器资源。

第三步:
找到你的 ingress 规则集文件,类似如下,加一个configuration-snippet,设置你的请求限制

kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: limit_req zone=one_zone burst=1 nodelay; limit_req_status 429;

这里的zone和你上面的zone要一直嗷。
burst表示超负荷了之后,允许多少个在排队。

第四步
重启一下nginx服务。

附录

其他的官网链接我放在这里:
官网链接
我参考的博客A
我参考的博客B

补充:参数不懂的可以搜搜,再配合gpt问问就能设置成功

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐