VirtualServiceUnreachableRule

当虚拟服务包含一个永远不会被使用的匹配规则(因为之前的规则指定了相同的匹配)时,会出现此消息。当存在多个没有任何匹配的规则时,也会出现此消息。

示例

您将收到此消息

Warning [IST0130] (VirtualService sample-foo-cluster01.default) VirtualService rule #1 not used (only the last rule can have no matches).

当您的集群包含以下虚拟服务时

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: sample-foo-cluster01
  namespace: foo
spec:
  hosts:
  - sample.foo.svc.cluster.local
  http:
  - fault:
      delay:
        fixedDelay: 5s
        percentage:
          value: 100
    route:
    - destination:
        host: sample.foo.svc.cluster.local
  - mirror:
      host: sample.bar.svc.cluster.local
    route:
    - destination:
        host: sample.bar.svc.cluster.local
        subset: v1

在此示例中,虚拟服务同时指定了故障和镜像。允许同时使用两者,但它们必须位于同一路由条目中。此处用户使用了两个不同的 http 路由条目(每个 - 一个),第一个覆盖了第二个。

如何解决

当您有一个没有 matchhttp 时,只能有一个 http 路由。在这种情况下,删除 mirror 之前的 "-" 表示存在一个匹配不上的路由,该路由同时注入故障和镜像,而不是一个路由注入故障,另一个路由镜像。

设置复杂路由时,请注意 YAML 格式。

重新排序您的路由,使最具体的路由排在最前面。将“捕获所有”路由放在最后。