共用方式為


Istio 服務網格附加元件輸入閘道疑難解答

本文討論如何針對 Azure Kubernetes Service (AKS) 的 Istio 服務網格附加元件上的輸入閘道問題進行疑難解答。 Istio 輸入閘道是以 Envoy 為基礎的反向 Proxy,可用來將連入流量路由傳送至網格中的工作負載。

針對 Istio 型服務網格附加元件,我們提供下列輸入閘道選項:

  • 使用私人IP位址的內部輸入閘道。

  • 使用可公開存取IP位址的外部輸入閘道。

注意

Microsoft不支援自定義內部或外部輸入閘道的 IP 位址。 Istio 服務網格附加元件的任何IP自定義變更都會還原。

附加元件會為每個修訂部署 Istio 輸入閘道 Pod 和部署。 如果您要進行 Canary 升級,並在叢集中安裝兩個控制平面修訂,則您可能必須針對這兩個修訂的多個輸入閘道 Pod 進行疑難解答。

疑難排解檢查清單

步驟 1:確定沒有任何防火牆或 NSG 規則封鎖輸入閘道

確認您沒有封鎖輸入閘道流量的防火牆或 網路安全組 (NSG) 規則 。 您必須明確新增目的地網路位址轉換 (DNAT) 規則,以允許透過 Azure 防火牆 進入閘道的輸入流量

步驟 2:正確設定閘道、虛擬服務和目的地規則

當您設定透過輸入閘道路由傳送流量的閘道、虛擬服務和目的地規則時,請遵循下列步驟:

  1. 如果您分別使用外部或內部閘道,請確定閘道資源中的輸入閘道選取器已設定為下列其中一個文字值:

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. 請確定已在閘道和虛擬服務中正確設定埠。 針對閘道,埠應針對 或 443 設定為 80 httphttps 針對虛擬服務,埠應該設定為應用程式所接聽之對應服務的埠。

  3. 確認服務已在閘道和虛擬服務的規格內 hosts 公開。 如果您在要求中遇到與標頭相關的 Host 問題,請嘗試新增至允許清單包含星號通配符 (“*”), 的所有主機,例如在此 範例網關組態中。 不過,我們建議您不要將允許清單修改為生產作法。 此外, hosts 應該 明確設定規格。

步驟 3:修正輸入閘道 Pod 的健康情況

如果輸入閘道 Pod 當機或未出現在就緒狀態,請確認 Istio 精靈 (istiod) 控制平面 Pod 處於就緒狀態。 輸入閘道取決於 istiod 發行準備就緒。

istiod如果 Pod 未處於就緒狀態,請確定 Istio 自定義資源定義 (CRD) 和 base Helm 圖表已正確安裝。 若要這樣做,請執行下列命令:

helm ls --all --all-namespaces

您可能會看到一個更廣泛的錯誤,其中附加元件安裝並未特別設定至輸入閘道。

istiod如果 Pod 狀況良好,但輸入閘道 Pod 沒有回應,請檢查命名空間中的aks-istio-ingress下列輸入閘道資源以收集詳細資訊:

  • Helm 版本
  • 部署
  • 服務

此外,您可以在一般 Istio 服務網格附加元件疑難解答中找到閘道和 Sidecar 偵錯的詳細資訊。

步驟 4:設定資源使用率

當 Istiod 和閘道的預設最小/最大複本設定不足時,就會發生高資源使用率。 在此情況下,請變更 水準 Pod 自動調整組 態。

步驟 5:針對安全輸入閘道進行疑難解答

當外部輸入閘道設定為使用簡單或相互 TLS 公開安全的 HTTPS 服務時,請遵循下列疑難解答步驟:

  1. 根據下列命令的輸出,確認和 SECURE_INGRESS_PORT_EXTERNAL 環境變數的值INGRESS_HOST_EXTERNAL是否有效:

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. 檢查閘道控制器記錄中的錯誤訊息:

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. 確認已在 命名空間中 aks-istio-ingress 建立秘密:

    kubectl -n aks-istio-ingress get secrets
    

如需 Azure Kubernetes Service 的 Istio 服務網格附加元件安全輸入網關中的範例,productpage-credential應列出秘密。

啟用 Azure 金鑰保存庫 秘密提供者附加元件之後,您必須將附加元件的使用者指派受控識別存取權授與 Azure 金鑰保存庫。 無法正確設定對 Azure 金鑰保存庫 的存取權,將會防止productpage-credential建立秘密。

建立SecretProviderClass資源之後,若要確保秘密會從 Azure 金鑰保存庫 同步至叢集,請確定已成功部署參考此資源的範例 Podsecrets-store-sync-productpage

參考資料

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。

協力廠商連絡資訊免責聲明

Microsoft 提供協力廠商連絡資訊,以協助您尋找有關此主題的其他資訊。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證協力廠商連絡資訊的準確性。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。