共用方式為


線上時無法使用組態檔

本文說明如何修正因為遺漏或無效配置檔而無法連線到 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 的本機組態檔。組檔包含用來連線到叢集的驗證認證和詳細數據。 預設情況:

因此,嘗試 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 命令以載入組態檔,以儲存認證。 如果您不想使用預設位置,請使用 config 的位置指定 參數(例如 ~/Dir1/Dir2/config 或 C:\Dir1\Dir2\config)。--file <config-file-location>

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 意見反應社群提交產品意見反應。