逐步排解 Cloud Service Mesh 問題
本節說明如何排解及解決使用 Cloud Service Mesh 時的問題。如需其他協助,請參閱「取得支援」。
疑難排解步驟
請按照下列一般步驟排解 Cloud Service Mesh 問題:
- 使用自動化設定驗證工具。
 - 確認你是否遇到常見問題,並瞭解已知解決方案。
 - 縮小問題範圍。
 - 查看相關記錄和資訊。
 - 收集診斷記錄檔並尋求協助。
 
Cloud Service Mesh 診斷工具可偵測常見的設定問題。請按照這些操作說明安裝疑難排解工具。
事前準備
請確認叢集的 kubeconfig 環境定義位於 kubeconfig 檔案中。否則,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME \ --location=CLUSTER_LOCATION --project=PROJECT_NAME更改下列內容:
CLUSTER_NAME:叢集名稱。CLUSTER_LOCATION:叢集的可用區或區域。PROJECT_NAME:專案名稱。
確認已建立應用程式預設憑證。如果不是,請執行下列其中一個指令:
gcloud auth application-default login --billing-project=PROJECT_NAMEgcloud auth application-default set-quota-project PROJECT_NAME將
PROJECT_NAME改成您專案的名稱。
查看控制層狀態
下列指令有助於瞭解 Cloud Service Mesh 控制層的狀態:
受管理
取得連線至 Cloud Service Mesh 控制層的用戶端連線狀態清單:
gcloud beta container fleet mesh debug proxy-status \ --membership=MEMBERSHIP_NAME \ --location=MEMBERSHIP_LOCATION \ --project=PROJECT_NAME更改下列內容:
MEMBERSHIP_NAME:會員方案名稱。MEMBERSHIP_LOCATION:會員方案的適用區域。您可以透過gcloud container fleet memberships list --project FLEET_PROJECT_ID查看會員的位置,並將FLEET_PROJECT_ID替換為車隊專案 ID。PROJECT_NAME:專案名稱。
下表說明可能的回應。
不明 (預設) 狀態資訊無法取得或不明。 SYNCED 控制層將設定傳送至用戶端,並收到用戶端的 ACK。 錯誤 控制層將設定傳送至用戶端,並從用戶端收到 NACK。 過時 控制層已將設定傳送至用戶端,但未收到用戶端的 ACK 或 NACK。 未傳送 設定未傳送。 不適用 不適用。 不支援 疑難排解 API 不支援同步狀態。 
叢集內
kubectl get pods -n istio-systemkubectl describe -n istio-system- 針對 istio-system 中的所有 Pod:
kubectl logs -n istio-system -l istio --all-containers istioctl versionistioctl proxy-statuskubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yamlkubectl top pods -n istio-system
請使用下列指令瞭解部署作業的規模:
kubectl get nodeskubectl get services --all-namespaceskubectl get pods --all-namespaces
查看 Proxy 設定
下列指令可協助您瞭解 Cloud Service Mesh 代理程式設定:
受管理
gcloud beta container fleet mesh debug proxy-config POD_NAME.NAMESPACE \ 
    --type=TYPE \
    --membership=MEMBERSHIP_NAME \
    --location=MEMBERSHIP_LOCATION \
    --project=PROJECT_NAME
POD_NAME:Pod 的名稱。NAMESPACE:Pod 的命名空間。TYPE:下列其中一項:- bootstrap
 - 叢集
 - 叢集
 - endpoint
 - 端點
 - 事件監聽器
 - 事件監聽器
 - log
 - 路徑
 - 路徑
 - 密鑰
 - Secret
 
MEMBERSHIP_NAME:會員方案名稱。MEMBERSHIP_LOCATION:會員方案的適用區域。您可以透過gcloud container fleet memberships list --project FLEET_PROJECT_ID查看會員的位置,並將FLEET_PROJECT_ID替換為車隊專案 ID。PROJECT_NAME:專案名稱。
叢集內
使用 istioctl proxy-config 查看叢集內控制平面的 Proxy 設定。詳情請參閱「偵錯 Envoy 和 istiod」。
如果問題仍未解決,請參閱下一節,確認問題是否為已知問題。
檢查常見問題和解決方法
您可以查看這些常見問題和解決方法專區,瞭解症狀是否與問題相符,節省時間。這些專區會依 Cloud Service Mesh 功能領域分組:
- 安裝問題
 - 代管控制層問題
 - 可觀測性問題
 - 部署作業以外的問題Google Cloud
 - Proxy 問題
 - 資源相關問題
 - 資源調度問題
 - 安全性問題
 - 流量管理問題
 - Webhook 問題
 - Sidecar Proxy 問題
 
如果這樣做無法解決問題,請參閱下一節。
縮小問題範圍
Cloud Service Mesh 包含多種共同運作的技術,因此特定類型的問題會與特定功能領域或元件相關聯。這些元件都會產生實用的記錄。在嘗試手動分析他們提供的資訊量之前,請先回答下列問題,縮小疑難排解範圍:
- 問題是否發生在控制層或資料層,例如 
istiod或 Envoy Proxy? - 您遇到問題的職能領域為何?例如網路、遙測、安全性等。
 - 服務網路上是否出現大範圍的流量損失,或僅限於特定部署作業?
 - 問題是否因服務網格無法擴充流量而出現或惡化?
 - 問題是否會導致延遲或其他效能問題?
 - 您是否可以視需要重現問題?
 - 問題是否是在最近變更 Istio、GKE 等設定後開始發生?
 - 服務網格內的流量是否增加或暴增?
 - 這個叢集是否啟用了任何顯著功能或非典型部署?
 - 您是否發現 CPU 或記憶體使用率偏高?如果是,預期的大規模用量為何?
 - 是否需要考量配額限制?
 
查看相關記錄和資訊
縮小問題範圍後,您就能更有效率地專注於特定記錄和資訊。如要瞭解 Cloud Service Mesh 產生的記錄,以及如何解讀記錄中的資訊,請參閱「解讀 Cloud Service Mesh 記錄」。