線上時無法使用組態檔

本文說明如何修正因配置檔遺失或無效而無法連線至 Azure Kubernetes Service (AKS) 叢集時所發生的問題。

必要條件

徵狀

在叢集連線嘗試期間,會出現類似下列文字的錯誤訊息:

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/configC:\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 尋找組態參數的位置:

原因 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 意應見反社群