执行启用速率限制任务内存配额时,速率限制不起作用。
我正在遵循ratelimit文档。除了演示设置之外,我能看到的一件事是我禁用了Sidecar服务。
在Kubernetes上运行istio 发行istio 1.2.5
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
name: quotahandler
namespace: istio-system
spec:
compiledAdapter: memquota
params:
quotas:
- name: requestcountquota.instance.istio-system
maxAmount: 2
validDuration: 1s
# The first matching override is applied.
# A requestcount instance is checked against override dimensions.
---
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"
---
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: my-service
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
还尝试重新启动飞行员和调音台,但在日志中未发现错误。
是否强制my-service
的Pod运行istio边车以限制速率? (我们确实有用于路由的虚拟服务,但没有杂物,因为要允许来自应用程序的外部调用)
答案 0 :(得分:0)
是的,该服务需要注入特使车辆以允许速率限制。
像乔尔一样,在评论中提到:
Sidecar是启用几乎所有istio功能所必需的,因此是必须的。要启用从应用程序到网状网络外部的呼叫,可以更改出口策略或创建服务条目,此处详细介绍:istio.io/docs/tasks/traffic-management/egress/egress-control
还有我的
如果您的服务不是由istio envoy注入的,则istio不会用于网络通信,因此无法应用速率限制。
根据istio文档:
Istio使创建带有负载的已部署服务网络变得容易 平衡,服务到服务的身份验证,监控等等, 与 few 或服务代码中没有代码更改。您将Istio支持添加到服务中 通过在整个环境中部署特殊的Sidecar代理, 拦截微服务之间的所有网络通信,然后 使用其控制平面功能配置和管理Istio, 其中包括:
用于HTTP,gRPC,WebSocket和TCP流量的自动负载平衡。
通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制。
可插拔的策略层和配置API,支持访问控制,速率限制和配额。
集群中所有流量的自动指标,日志和跟踪,包括集群的入口和出口。
通过基于身份的强大身份验证和授权,确保群集中服务之间的通信安全。
Istio专为可扩展性而设计,可满足各种部署需求 需求。