连接时配置文件不可用
本文介绍如何解决由于配置文件缺失或无效而无法连接到 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 命令修改 了 ~/.kube/config 文件,该命令用于获取托管 Kubernetes 群集的访问凭据。
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
命令来加载配置文件,这将保存凭据。 如果不想使用默认位置,请使用配置 (的位置指定 --file <config-file-location>
参数,例如~/Dir1/Dir2/config 或 C:\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 查找配置参数的位置:
修改
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 反馈社区提交产品反馈。