连接时配置文件不可用

本文介绍如何解决由于配置文件缺失或无效而无法连接到 Azure Kubernetes 服务 (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 命令来加载配置文件,这将保存凭据。 如果不想使用默认位置,请使用配置 (的位置指定 --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 社区支持。 还可以向 Azure 反馈社区提交产品反馈。