AKS环境Kong全局插件配置报错及限流、IP限制功能异常咨询
问题1:全局标签配置报错
Kubernetes 标签值不允许携带额外引号,你配置中的global: 'true'会被解析为带引号的字符串"true",不符合标签校验规则。
修正配置如下:
labels: global: true
布尔值true会被自动转换为合规的字符串值true,无需额外包裹引号。
问题2:全局插件未自动生效
该问题由问题1直接导致:你之前的配置提交失败,插件的全局标签未正常生效,插件实际未被标记为全局插件,因此需要在Ingress中显式绑定。
问题1修复后,无需在Ingress的konghq.com/plugins注解中声明该插件,即可对所有Kong代理的请求生效。
注意:如果你使用的是2.0以上版本的Kong Ingress Controller,建议删除KongClusterPlugin中废弃的kubernetes.io/ingress.class: kong注解,统一使用ingressClassName匹配规则。
问题3:按IP限流规则异常、业务服务公网暴露
你混淆了需要配置externalTrafficPolicy的服务对象:
- 不需要修改后端业务Service的配置,业务Service可保持
ClusterIP类型不对外暴露 - 需将Kong Ingress Controller自身的代理Service(AKS中默认是LoadBalancer类型,用于接收公网流量)的
externalTrafficPolicy设为Local,即可在Kong侧拿到真实客户端IP,不会暴露后端业务服务。
随机返回429的问题是因为你限流策略配置为policy: local:该模式下每个Kong副本独立计数,若你部署了N个Kong副本,总限流阈值为N * 配置的minute值,请求分发不均时就会出现随机拦截的问题。若需要全局统一计数,可将policy改为cluster(基于Kong集群内存同步)或redis(基于外部Redis存储)。
问题4:IP限制插件不生效
该问题根因为Kong未拿到真实客户端IP:你未配置Kong代理Service的externalTrafficPolicy: Local时,Kong拿到的IP是集群内部的节点转发IP,匹配不到你配置的公网拒绝IP列表。完成问题3的IP透传配置后即可正常匹配。
你也可以在Kong访问日志中打印client_ip字段,确认Kong获取到的客户端IP是否符合预期。
问题5:限流阈值与配置不符
该问题有两个常见原因:
- 限流策略为
local模式,多副本场景下总阈值为副本数乘以单副本配置阈值,和预期的全局阈值不符 - 未拿到真实客户端IP时,所有请求会被判定为同一个IP,限流计数会远快于预期
完成问题3的策略调整和IP透传配置后即可解决。
内容的提问来源于stack exchange,提问作者Mar Chal
相关产品推荐
相关产品推荐

