kubernetes - 速率限制不限制任何东西
问题描述
我正在尝试使用istio 速率限制来限制对服务hello的访问。(每秒最多 1 次调用)
我使用了 book info 演示应用程序中的模板。
这是我到目前为止的配置:
处理程序
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
name: quotahandler
namespace: istio-system
spec:
compiledAdapter: memquota
params:
quotas:
- name: requestcountquota.instance.istio-system
maxAmount: 1
validDuration: 1s
实例
apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:
name: requestcountquota
namespace: istio-system
spec:
compiledTemplate: quota
params:
dimensions:
source: request.headers["x-forwarded-for"] | "unknown"
destination: destination.labels["app"] | "unknown"
配额规范
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:
name: request-count
namespace: istio-system
spec:
rules:
- quotas:
- charge: 1
quota: requestcountquota
配额规范绑定
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:
name: request-count
namespace: istio-system
spec:
quotaSpecs:
- name: request-count
namespace: istio-system
services:
- name: hello
namespace: default
规则
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: quota
namespace: istio-system
spec:
actions:
- handler: quotahandler
instances:
- requestcountquota
不用说,即使服务的 ip 每秒超过 1 个请求并且限制被激活,curling 服务的 ip 仍然可以工作......
仅供参考,我使用了 serviceIP / virtualService(+ 网关)。
此外,我使用的是“内存中”版本,而不是 Redis 版本。
任何有关理解错误所在的帮助将不胜感激!
解决方案
推荐阅读
- firebase - Firestore 安全规则 - 如何只允许地图内的地图中的某些字段
- python - 使用 2 for 循环
- neural-network - 反向传播如何适用于多个隐藏网络?
- python - 将列表中的值输入到空字典 Python
- java - Spring JPA - org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话
- javascript - 格式化一些数据以作为多连字符字符串名称传递
- java - Hystrix 中metrics.rollingStats.numBuckets 的目的是什么?
- c# - Nuke 构建 .nuke 文件并构建多个解决方案
- python - 尝试使用 tensorfow_to_barracuda.py 将 .pb 转换为 .nn 时出现问题
- deep-learning - 大小不匹配,m1:[1 x 5],m2:[7 x 100] 在 /pytorch/aten/src/TH/generic/THTensorMath.cpp:752