逐步排解 Cloud Service Mesh 問題

本節說明如何排解及解決使用 Cloud Service Mesh 時的問題。如需其他協助,請參閱取得支援

疑難排解步驟

請按照下列一般步驟排解 Cloud Service Mesh 問題:

  1. 使用自動設定驗證工具。
  2. 確認是否有常見問題,並查看是否有已知的解決方法。
  3. 縮小問題範圍。
  4. 查看相關記錄和資訊。
  5. 收集診斷記錄檔並尋求協助。

使用自動驗證工具

Cloud Service Mesh 提供自動化診斷和設定驗證工具,可解決問題並協助您避免日後發生問題。以下各節將說明如何使用這些工具。

istioctl analyze

istioctl analyze 診斷工具可偵測常見的設定問題。請按照這些操作說明安裝 istioctl

istioctl analyze 會讀取叢集設定,如果發現問題,就會提供資訊性訊息並建議解決方法。可針對實際群組或一組本機設定檔執行。也可以針對這兩者組合執行,讓您在將變更套用至叢集之前找出問題。詳情請參閱「使用 istioctl analyze 診斷設定」。如要進一步瞭解 istioctl analyze 偵測到的錯誤,請參閱「設定分析訊息」。

分析即時叢集

使用下列指令分析即時叢集。

istioctl analyze -A

如果 istioctl analyze 偵測到設定有問題,就會顯示訊息,並提供有用的資訊 (如果有) 來解決問題。舉例來說,如果您犯了常見的錯誤,沒有正確標記命名空間以啟用 Istio 補充物注入功能,系統就會產生以下訊息:

Warn [IST0102] (Namespace default) The namespace is not enabled for Istio injection.
Run 'kubectl label namespace default istio-injection=enabled' to enable it,
or 'kubectl label namespace default istio-injection=disabled'
to explicitly mark it as not needing injection

如果問題仍未解決,請參閱下一節,瞭解是否已知曉你的問題。

檢查常見問題和解決方案

您可以節省時間,檢查您的問題症狀是否與以下常見問題和解決方法相符,這些問題和解決方法已依 Cloud Service Mesh 功能領域分組:

如果這樣做無法解決問題,請參閱下一節。

縮小問題範圍

Cloud Service Mesh 由多項技術組成,這些技術會共同運作,這表示某些類型的問題會與特定功能領域或元件相關聯。每個元件都會產生有用的記錄。在嘗試手動分析他們提供的大量資訊之前,請先回答下列問題,縮小排解問題的範圍:

  • 問題是否發生在控制層或資料層 (例如 istiod 或 Envoy Proxy)?
  • 您在哪個功能領域遇到問題,例如網路、遙測、安全性等?
  • 服務網狀結構是否有流量損失,或是在特定部署中發生?
  • 是否因為無法在服務網格中擴充流量,導致問題出現或惡化?
  • 這個問題是否會導致延遲或其他效能問題?
  • 你可以重現問題嗎?
  • 問題是否是在 Istio、GKE 等最近的設定變更後開始發生?
  • 服務網格中的流量是否有增加或遽增的情形?
  • 這個叢集是否啟用了任何明顯的功能或非典型部署?
  • 您是否觀察到 CPU 或記憶體使用率偏高?如果是的話,預期的大量使用量是多少?
  • 是否有配額限制需要考量?

查看控制層狀態

下列指令可協助您瞭解 Cloud Service Mesh 控制層的狀態:

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • 針對 istio-system 中的所有 Pod:kubectl logs -n istio-system -l istio --all-containers
  • istioctl version
  • istioctl proxy-status
  • kubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yaml
  • kubectl top pods -n istio-system

請使用下列指令瞭解部署規模:

  • kubectl get nodes
  • kubectl get services --all-namespaces
  • kubectl get pods --all-namespaces

查看相關記錄和資訊

縮小問題範圍後,您就能更有效率地專注於特定記錄和資訊。如要瞭解 Cloud Service Mesh 產生的記錄,以及如何解讀記錄中包含的資訊,請參閱「解讀 Cloud Service Mesh 記錄」。