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

重新排序您的路由,使最明確的路由排在最前面。將「全部捕獲」路由放在最後。