線上時無法使用組態檔
本文說明如何修正因配置檔遺失或無效而無法連線至 Azure Kubernetes Service (AKS) 叢集時所發生的問題。
必要條件
- Azure CLI。
- kubernetes 叢集命令行工具 (kubectl) 。 您也可以在 Azure CLI 中執行 az aks install-cli 命令來安裝 kubectl。
徵狀
在叢集連線嘗試期間,會出現類似下列文字的錯誤訊息:
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
error: You must be logged in to the server (the server has asked for the client to provide credentials)
原因
kubectl 工具和其他 Kubernetes 連接工具會使用名為 config 的本機組態檔。組態檔包含用來連線到叢集的驗證認證和詳細數據。 根據預設:
Azure CLI 中的 az aks get-credentials 命令可用來取得受控 Kubernetes 叢集的存取認證,它會修改 ~/.kube/config 檔案。
kubectl 命令會使用 kubeconfig ($HOME/.kube 目錄中的 kubectl 組態) 檔案。
因此,嘗試執行 Kubernetes 會話期間會發生什麼事,取決於執行 kubectl 命令的使用者。 如果您已以使用者 A 身分登入並執行這兩個命令,則會發生下列情況:
命令
az aks get-credentials
會嘗試在 C:\Users\A\.kube\config 檔案中新增 kubeconfig 參數。kubectl 命令會嘗試搜尋 C:\Users\A\.kube\config 檔案。
但針對 kubectl,如果 kubeconfig 檔案的指標已變更,用於存取叢集的檔案應該位於不同的位置。
注意事項
kubeconfig 檔案是檔案的參考,其中包含用來存取 Kubernetes 叢集的組態參數。 它不一定會參考名為 kubeconfig 的檔案。
如果發生下列其中一個案例,就會發生此錯誤:
原因 1: 配置 檔不存在
配置檔不存在於您的電腦上。
解決方案:儲存認證
在 Azure CLI 中執行 az aks get-credentials
命令來載入組態檔,以儲存認證。 如果您不想要使用預設位置,請使用設定 (的位置來指定 --file <config-file-location>
參數,例如 ~/Dir1/Dir2/config 或 C:\Dir1\Dir2\config) 。
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
[--file <config-file-location>]
原因 2: 設定 檔位於錯誤的目錄中
組態檔位於您的電腦上,但位於命令和/或 kubectl 工具預期所在的不同目錄az aks get-credentials
中。
解決方案:移動 組態 檔、再次儲存認證,或變更 KUBECONFIG 環境變數
採取下列一或多個動作:
將 組態 檔移至您想要它的目錄。
執行
az aks get-credentials
命令。 如果不是預設位置,請指定您想要的位置。az aks get-credentials --resource-group <cluster-resource-group> \ --name <cluster-name> \ [--file <config-file-location>]
使用下列其中一個選項來變更 kubectl 尋找組態參數的位置:
KUBECONFIG
修改環境變數以指向組態檔的目前位置。 如需詳細資訊, 請參閱設定 KUBECONFIG 環境變數。使用 參數執行 kubectl config 命令
--kubeconfig=<config-file-location>
。
原因 3: 配置 檔已過期或損毀
組 態 檔位於您的電腦上。 它也位於命令和 kubectl 工具的預期目錄 az aks get-credentials
中。 但檔案已過期或損毀。
解決方案:重新建立認證
重新建立認證,因為現有的認證可能已過期或損毀。 在此情況下,您可以 az aks get-credentials
使用 參數來 --overwrite-existing
執行 命令。
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
--overwrite-existing \
[--file <config-file-location>]
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應