连接时配置文件不可用

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