診斷已啟用 Azure Arc 的 Kubernetes 叢集的連線問題

如果您在將叢集連線到 Azure Arc 時遇到問題,可能是因為此處所列的其中一個問題所致。 我們提供兩個具有引導式說明的流程圖:一個適用於您未使用 Proxy 伺服器的情況,另一個則適用於您的網路連線使用 Proxy 伺服器的情況。

提示

不論您是使用 Azure CLI 還是Azure PowerShell 來連線叢集,都適用此流程圖中的步驟。 不過,某些步驟需要使用 Azure CLI。 如果您尚未安裝 Azure CLI,請務必在開始之前執行此動作。

沒有 Proxy 的連線

檢閱此流程圖,以診斷在沒有 Proxy 伺服器的情況下嘗試將叢集連線到 Azure Arc 時的問題。 以下提供有關每個步驟的更多詳細資料。

Flowchart showing a visual representation of checking for connection issues when not using a proxy.

Azure 身分識別是否有足夠的權限?

檢閱連線叢集的必要條件,並確定您用來連線叢集的身分識別具有必要的權限。

您是否正在執行最新版的 Azure CLI?

確定您已安裝最新版本

如果您使用 Azure PowerShell 來連線您的叢集,請確定您正在執行最新的版本

connectedk8s 延伸模組是否為最新版本?

執行此命令,將 Azure CLI connectedk8s 延伸模組更新為最新版本:

az extension update --name connectedk8s

如果您尚未安裝延伸模組,您可以執行下列命令來執行此動作:

az extension add --name connectedk8s

kubeconfig 是否指向正確的叢集?

執行 kubectl config get-contexts 以確認目標內容名稱。 然後執行 kubectl config use-context <target-cluster-name>,將預設內容設定為正確的叢集。

所有必要資源提供者都已註冊?

請確定已註冊 Microsoft.Kubernetes、Microsoft.KubernetesConfiguration 和 Microsoft.ExtendedLocation 資源提供者。

是否符合所有網路需求?

檢閱網路需求,並確保未封鎖任何必要的端點。

azure-arc 命名空間中的所有 Pod 是否執行中?

如果一切正常運作,您的 Pod 應該全都處於 Running 狀態。 執行 kubectl get pods -n azure-arc 以確認任何 Pod 的狀態是否不是 Running

仍然有問題嗎?

上述步驟將解決許多常見的連線問題,但如果您仍然無法成功連線,請產生疑難排解記錄檔,然後開啟支援要求,以便我們可以進一步調查問題。

若要產生疑難排解記錄檔,請執行下列命令:

az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>

當您建立支援要求時,請在 [其他詳細資料] 區段中,使用 [檔案上傳] 選項來上傳產生的記錄檔。

使用 Proxy 伺服器的連線

如果您在至少一部機器上使用 Proxy 伺服器,請完成非 Proxy 流程圖的前五個步驟 (透過資源提供者註冊),以進行基本疑難排解步驟。 然後,如果您仍然遇到問題,請檢閱下一個流程圖以取得其他疑難排解步驟。 以下提供有關每個步驟的更多詳細資料。

Flowchart showing a visual representation of checking for connection issues when using a proxy.

機器是否在 Proxy 伺服器後方執行命令?

如果機器在 Proxy 伺服器後面執行命令,則需要設定所有必要的環境變數。 如需詳細資訊,請參閱使用輸出 Proxy 伺服器連線

例如:

export HTTP_PROXY="http://<proxyIP>:<proxyPort>"
export HTTPS_PROXY="https://<proxyIP>:<proxyPort>"
export NO_PROXY="<cluster-apiserver-ip-address>:<proxyPort>"

Proxy 伺服器是否只接受信任的憑證?

執行 az connectedk8s connect 命令時,請務必包含 --proxy-cert <path-to-cert-file> 來併入憑證檔案路徑。

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Proxy 伺服器是否能夠連線到所需的網路端點?

檢閱網路需求,並確保未封鎖任何必要的端點。

Proxy 伺服器是否只使用 HTTP?

如果您的 Proxy 伺服器只使用 HTTP,您可以對這兩個參數使用 proxy-http

如果您的 Proxy 伺服器同時設定 HTTP 和 HTTPS,請執行 az connectedk8s connect 命令並搭配指定 --proxy-https--proxy-http 參數。 請確定您對 HTTP Proxy 使用 --proxy-http 和對 HTTPS Proxy 使用 --proxy-https

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port>  

Proxy 伺服器是否需要略過服務對服務通訊的範圍?

如果您需要略過範圍,請在 az connectedk8s connect 命令中使用 --proxy-skip-range <excludedIP>,<excludedCIDR>

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR>

azure-arc 命名空間中的所有 Pod 是否執行中?

如果一切正常運作,您的 Pod 應該全都處於 Running 狀態。 執行 kubectl get pods -n azure-arc 以確認任何 Pod 的狀態是否不是 Running

仍然有問題嗎?

上述步驟將解決許多常見的連線問題,但如果您仍然無法成功連線,請產生疑難排解記錄檔,然後開啟支援要求,以便我們可以進一步調查問題。

若要產生疑難排解記錄檔,請執行下列命令:

az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>

當您建立支援要求時,請在 [其他詳細資料] 區段中,使用 [檔案上傳] 選項來上傳產生的記錄檔。

下一步