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 的格式。

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