连接时配置文件不可用
本文介绍如何解决因配置文件缺失或无效而无法连接到 Azure Kubernetes 服务 (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 命令使用 $HOME/.kube 目录中的 kubeconfig (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
命令来加载配置文件,这会保存凭据。 如果不想使用默认位置,请使用配置的位置指定参数(例如 ~/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 查找配置参数的位置:
修改
KUBECONFIG
环境变量以指向 配置文件 的当前位置。 有关详细信息,请参阅 设置 KUBECONFIG 环境变量。使用
--kubeconfig=<config-file-location>
参数运行 kubectl config 命令。
原因 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 反馈社区。