可視化您的網格

此任務說明如何可視化您的 Istio 網格的不同方面。

作為此任務的一部分,您將安裝 Kiali 外掛程式,並使用基於 Web 的圖形使用者介面來檢視網格的服務圖和您的 Istio 設定物件。

此任務在整個過程中都使用 Bookinfo 範例應用程式作為範例。此任務假設 Bookinfo 應用程式安裝在 bookinfo 命名空間中。

開始之前

請依照 Kiali 安裝 文件,將 Kiali 部署到您的叢集中。

產生圖表

  1. 要驗證服務是否在您的叢集中運行,請執行以下命令

    $ kubectl -n istio-system get svc kiali
    
  2. 要確定 Bookinfo URL,請依照說明確定 Bookinfo ingress GATEWAY_URL

  3. 要將流量傳送到網格,您有三個選項

    • 在您的網頁瀏覽器中訪問 http://$GATEWAY_URL/productpage

    • 多次使用以下命令

      $ curl http://$GATEWAY_URL/productpage
      
    • 如果您的系統中安裝了 watch 命令,請使用以下命令持續發送請求

      $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
      
  4. 要在 Kubernetes 環境中開啟 Kiali UI,請執行以下命令

    $ istioctl dashboard kiali
    
  5. 在您登入後立即出現的 **概觀** 頁面中,檢視您網格的概觀。**概觀** 頁面會顯示網格中具有服務的所有命名空間。以下螢幕截圖顯示類似的頁面

    Example Overview
    概觀範例
  6. 要檢視命名空間圖,請在 Bookinfo 概觀卡片的 kebab 選單中選擇 `Graph` 選項。kebab 選單位於卡片的右上角,看起來像 3 個垂直點。點擊它以查看可用的選項。該頁面看起來類似於

    Example Graph
    圖表範例
  7. 該圖表表示流量在服務網格中一段時間的流動情況。它是使用 Istio 遙測資料產生的。

  8. 要檢視指標摘要,請選擇圖表中的任何節點或邊緣,以在右側的摘要詳細資訊面板中顯示其指標詳細資訊。

  9. 要使用不同的圖表類型檢視您的服務網格,請從 **圖表類型** 下拉選單中選擇圖表類型。有多種圖表類型可供選擇:**應用程式 (App)**、**版本化的應用程式 (Versioned App)**、**工作負載 (Workload)**、**服務 (Service)**。

    • **應用程式 (App)** 圖表類型將應用程式的所有版本聚合到單一圖表節點中。以下範例顯示單一 **reviews** 節點,代表 reviews 應用程式的三個版本。請注意,`顯示服務節點` 顯示選項已停用。

      Example App Graph
      應用程式圖範例
    • **版本化的應用程式 (Versioned App)** 圖表類型會為應用程式的每個版本顯示一個節點,但特定應用程式的所有版本會群組在一起。以下範例顯示 **reviews** 群組框,其中包含代表 reviews 應用程式的三個版本的三個節點。

      Example Versioned App Graph
      版本化的應用程式圖範例
    • **工作負載 (Workload)** 圖表類型會為服務網格中的每個工作負載顯示一個節點。此圖表類型不要求您使用 `app` 和 `version` 標籤,因此如果您選擇不在您的元件上使用這些標籤,這可能是您選擇的圖表類型。

      Example Workload Graph
      工作負載圖範例
    • **服務 (Service)** 圖表類型會顯示網格中服務流量的高階聚合。

      Example Service Graph
      服務圖範例

檢查 Istio 設定

  1. 左側選單選項會導向 **應用程式 (Applications)**、**工作負載 (Workloads)**、**服務 (Services)** 和 **Istio 設定 (Istio Config)** 的清單檢視。以下螢幕截圖顯示 Bookinfo 命名空間的 **服務 (Services)** 資訊

    Example Details
    詳細資訊範例

流量轉移

您可以使用 Kiali 流量轉移精靈來定義要路由到兩個或多個工作負載的特定請求流量百分比。

  1. 檢視 `bookinfo` 圖表的 **版本化的應用程式圖**。

    • 請確保您已啟用 **流量分配** 邊緣標籤 **顯示** 選項,以查看路由到每個工作負載的流量百分比。

    • 請確保您已啟用 **顯示服務節點** **顯示** 選項,以檢視圖表中的服務節點。

    Bookinfo Graph Options
    Bookinfo 圖表選項
  2. 點擊 `ratings` 服務 (三角形) 節點,將焦點放在 `bookinfo` 圖表中的 `ratings` 服務上。請注意,`ratings` 服務流量平均分配到兩個 `ratings` 工作負載 `v1` 和 `v2`(50% 的請求會路由到每個工作負載)。

    Graph Showing Percentage of Traffic
    顯示流量百分比的圖表
  3. 點擊側面板中找到的 **ratings** 連結,以進入 `ratings` 服務的詳細資訊檢視。也可以透過輔助點擊 `ratings` 服務節點,並從內容選單中選擇 `Details` 來完成。

  4. 從 **動作** 下拉選單中,選擇 **流量轉移** 以存取流量轉移精靈。

    Service Actions Menu
    服務動作選單
  5. 拖曳滑桿以指定要路由到每個工作負載的流量百分比。對於 `ratings-v1`,請設定為 10%;對於 `ratings-v2`,請設定為 90%。

    Weighted Routing Wizard
    加權路由精靈
  6. 點擊 **預覽** 按鈕以檢視精靈將產生的 YAML。

    Routing Wizard Preview
    路由精靈預覽
  7. 點擊 **建立** 按鈕並確認以套用新的流量設定。

  8. 點擊左側導覽列中的 **圖表** 以返回 `bookinfo` 圖表。請注意,`ratings` 服務節點現在已使用 `虛擬服務` 圖示標記。

  9. 將請求傳送到 `bookinfo` 應用程式。例如,要每秒傳送一個請求,如果您的系統上安裝了 `watch`,則可以執行此命令

    $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
    
  10. 幾分鐘後,您會注意到流量百分比會反映新的流量路由,從而確認新的流量路由已成功將所有流量請求的 90% 路由到 `ratings-v2`。

    90% Ratings Traffic Routed to ratings-v2
    90% 的 Ratings 流量路由到 ratings-v2

驗證 Istio 設定

Kiali 可以驗證您的 Istio 資源,以確保它們遵循正確的慣例和語義。在 Istio 資源配置中偵測到的任何問題都可能根據錯誤配置的嚴重程度標記為錯誤或警告。請參閱 Kiali 驗證頁面,以查看 Kiali 執行的所有驗證檢查清單。

強制執行服務埠名稱的無效配置,以查看 Kiali 如何報告驗證錯誤。

  1. 將 `details` 服務的埠名稱從 `http` 變更為 `foo`

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"foo"}]'
    
  2. 透過點擊左側導覽列上的 **服務 (Services)**,導覽至 **服務 (Services)** 清單。

  3. 如果尚未選擇,請從 **命名空間** 下拉選單中選擇 `bookinfo`。

  4. 請注意 `details` 列的 **配置** 欄中顯示的錯誤圖示。

    Services List Showing Invalid Configuration
    顯示無效配置的服務清單
  5. 點擊 **名稱** 欄中的 **details** 連結,導覽至服務詳細資訊檢視。

  6. 將滑鼠懸停在錯誤圖示上以顯示描述錯誤的工具提示。

    Service Details Describing the Invalid Configuration
    描述無效配置的服務詳細資訊
  7. 將埠名稱改回 `http` 以修正配置,並使 `bookinfo` 返回正常狀態。

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"http"}]'
    
    Service Details Showing Valid Configuration
    顯示有效配置的服務詳細資訊

檢視和編輯 Istio 設定 YAML

Kiali 提供 YAML 編輯器,用於檢視和編輯 Istio 配置資源。YAML 編輯器也會在偵測到不正確的配置時提供驗證訊息。

  1. 在 `bookinfo` VirtualService 中引入錯誤

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway-invalid"}]'
    
  2. 點擊左側導覽列上的 `Istio Config`,導覽至 Istio 配置清單。

  3. 如果尚未選擇,請從 **命名空間** 下拉選單中選擇 `bookinfo`。

  4. 請注意警告您存在配置問題的錯誤圖示。

    Istio Config List Incorrect Configuration
    Istio 配置清單不正確的配置
  5. 點擊 `bookinfo` 列的 **配置** 欄中的錯誤圖示,導覽至 `bookinfo` 虛擬服務檢視。

  6. **YAML** 標籤已預先選取。請注意與驗證檢查通知相關聯的列上的顏色醒目提示和圖示。

    YAML Editor Showing Validation Notifications
    顯示驗證通知的 YAML 編輯器
  7. 將滑鼠懸停在紅色圖示上以檢視工具提示訊息,該訊息會通知您觸發錯誤的驗證檢查。如需有關錯誤原因以及如何解決的更多詳細資訊,請在 Kiali 驗證頁面上查閱驗證錯誤訊息。

    YAML Editor Showing Error Tool Tip
    顯示錯誤工具提示的 YAML 編輯器
  8. 將虛擬服務 `bookinfo` 重設回其原始狀態。

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway"}]'
    

其他功能

Kiali 具有許多此任務中未檢閱的功能,例如與 Jaeger 追蹤整合

如需有關這些其他功能的更多詳細資訊,請參閱 Kiali 文件

如需更深入地探索 Kiali,建議執行 Kiali 教學課程

清除

如果您不打算執行任何後續任務,請從您的叢集中移除 Bookinfo 範例應用程式和 Kiali。

  1. 要移除 Bookinfo 應用程式,請參閱 Bookinfo 清理 說明。

  2. 要從 Kubernetes 環境中移除 Kiali

    $ kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/kiali.yaml
    
此資訊是否有用?
您是否有任何改進建議?

感謝您的回饋!