【问题标题】:why Istio rate-limiting working incorrect?为什么 Istio 限速工作不正确?
【发布时间】:2019-05-30 20:53:58
【问题描述】:

我根据 istio 教程正确配置了速率限制,并且有效。但是当我降低限制时,似乎速率限制没有改变。这是我的所有配置文件。我希望你能给我一些帮助。非常感谢。

apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: quotahandler
  namespace: istio-system
spec:
  compiledAdapter: memquota
  params:
    quotas:
    - name: requestcountquota.instance.istio-system
      maxAmount: 500
      validDuration: 1s
      overrides:
      - dimensions:
          destination: productpage
          source: "10.28.11.20"
        maxAmount: 500
        validDuration: 1s
      - dimensions:
          destination: productpage
        maxAmount: 500  (Here I increased the number of requests per second.)
        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"] | destination.service.name | "unknown"
      destinationVersion: destination.labels["version"] | "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: productpage
    namespace: default
    #  - service: '*'  # Uncomment this to bind *all* services to request-count
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  # quota only applies if you are not logged in.
  # match: match(request.headers["cookie"], "user=*") == false
  actions:
  - handler: quotahandler
    instances:
    - requestcountquota

一开始我是直接配置的。

- dimensions:
Destination: product page
MaxAmount: 1
Valid Duration: 5S

限速效果很好。 当我配置时:

- dimensions:
Destination: product page
MaxAmount: 500
ValidDuration: 1s

请求短时间内还是会返回429,此时配置(500/s)应该是无限制的。测试的时候我直接访问了k8s产品页面服务IP,比如curl 10.233.5.240:9080/product页面。

我希望你能告诉我原因。非常感谢您的回答。

【问题讨论】:

    标签: kubernetes istio


    【解决方案1】:

    我已经解决了这个问题,因为 istio-policy 组件的资源(cpu&memory)不足,并且默认分配的太少,导致策略无效。但我不知道为什么。请解释 memquota 或 redisquota 中的内容。配额配置不都是envoy配置吗?

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多