VirtualServiceIneffectiveMatch

当虚拟服务包含一个永远不会使用的匹配规则时,会发生此消息,因为先前的规则指定了相同的匹配。

示例

您将收到此消息

Info [IST0131] (VirtualService tls-routing.default) VirtualService rule #1 match #0 is not used (duplicates a match in rule #0).

当您的集群具有以下虚拟服务时

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: tls-routing
spec:
  hosts:
  - www1.googleapis.com
  - api1.facebook.com
  tls:
  - match:
    - port: 2443
      sniHosts:
      - www1.googleapis.com
    route:
    - destination:
        host: www1.googleapis.com
  - match:
    - port: 2443
      sniHosts:
      - www1.googleapis.com
    route:
    - destination:
        host: api1.facebook.com

在此示例中,虚拟服务为相同的匹配指定了两个不同的目标。 Istio 将使用第一个匹配,并且永远不会将流量发送到第二个目标。

如何解决

如果您需要将流量发送到多个位置,请使用 mirror

重新排序您的路由,以便最具体的路由位于最前面。 将“全部捕获”路由放在最后。