【问题标题】:Istio RouteRules doesn't work togetherIstio RouteRules 不能一起工作
【发布时间】:2018-08-07 09:26:32
【问题描述】:

我有两个 Istio RouteRules 用于 httpDelay

apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: foo-delay
spec:
  destination:
    name: foo-server
  precedence: 5
  route:
  - labels:
      serving: "true"
  httpFault:
    delay:
      fixedDelay: 7.000s
      percent: 100

对于httpReqTimeout

apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
  name: foo-timeout-default
spec:
  destination:
    name: foo-server
  route:
  - labels:
      serving: "true"
  httpReqTimeout:
    simpleTimeout:
      timeout: 5s
  precedence: 3

但是,我无法让这两个 RouteRules 一起工作。对于此配置,我对foo-server 有延迟,但请求超时不起作用,因此我从foo-server 接收数据。我试图更改httpDelay 规则precedence: 2。在这种情况下,根本不会有任何延迟,我认为httpReqTimeout 工作正常。 在这两种情况下,我都可以看到两个规则都已创建:

>istioctl get routerules
NAME                KIND                    NAMESPACE
foo-delay           RouteRule.v1alpha2.config.istio.io  default
foo-timeout-default RouteRule.v1alpha2.config.istio.io  default

为什么这两个RouteRules 不一起工作?

【问题讨论】:

    标签: kubernetes kubectl minikube istio


    【解决方案1】:

    这里发生了两件事。 Istio 中的 RouteRule “优先级”不会推断合并。因此,具有最高优先级和匹配条件的规则将首先匹配,而所有其他规则将被特使代理忽略。此外,即使您将这两个规则合并为一个规则,不幸的是 envoy 也无法处理这种情况。 Envoy 的编写方式是在任何超时/重试之前应用故障

    【讨论】:

    • 可惜了。但是您确定在任何情况下都只应用一个规则吗?文档说Rules with higher precedence values are evaluated first .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2014-01-07
    • 2019-08-17
    • 2020-06-30
    相关资源
    最近更新 更多