如何在Ubuntu 16.04/18.04 LTS WSL安装kubectl及解决AKS连接报错
WSL环境(Ubuntu 16.04/18.04 LTS)kubectl安装指引与AKS连接异常排查
1. Kubectl 安装步骤
- 导入Kubernetes软件源的校验公钥,避免安装过程出现源签名校验失败的问题:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
- 添加Kubernetes的apt软件源,适配Ubuntu 16.04、18.04 LTS的系统版本:
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
- 更新软件包索引,安装kubectl:
sudo apt update && sudo apt install -y kubectl
*注意:安装的kubectl版本需要和目标AKS集群的版本差不超过1个小版本,避免出现API兼容性问题。
2. 连接AKS集群报localhost:8080 was refused的解决方法
这个报错的核心原因是kubectl没有加载到有效的集群连接配置,触发了默认的本地API Server连接逻辑,和真实集群的网络连通性无关,可按以下步骤逐一排查解决:
- 检查
az aks get-credentials命令的执行结果,确认命令执行过程中没有出现权限不足、路径写入失败的提示。正常执行完成后,集群的认证凭证会默认写入WSL环境下~/.kube/config文件。 - 校验
KUBECONFIG环境变量的指向:执行echo $KUBECONFIG查看输出,如果返回值不是~/.kube/config,说明环境变量指向了不存在的配置路径,导致kubectl无法读取凭证,回退到默认的本地8080端口连接。可执行export KUBECONFIG=~/.kube/config临时修正,再将这行命令追加到~/.bashrc配置文件中实现永久生效。 - 检查kubeconfig文件的访问权限和内容:执行
ls -l ~/.kube/config,确保当前WSL用户对该文件有读取权限,权限异常时可执行chmod 600 ~/.kube/config修正。如果之前使用sudo执行过az aks get-credentials命令,可能会把凭证写入到root用户的家目录下,导致普通WSL用户无法读取配置,此时需要重新以普通用户身份执行凭证拉取,或者将/root/.kube/config的文件所有权转移给当前登录用户。再执行kubectl config view,确认输出中包含目标AKS集群的API Server地址、认证信息,不存在空配置的情况。 - 确认kubectl当前使用的上下文:执行
kubectl config get-contexts,查看输出列表中目标AKS集群对应的行是否带有*标记的当前上下文标识。如果未选中,可执行kubectl config use-context <对应AKS集群的上下文名称>切换到正确的配置上下文。 - 如果
az aks get-credentials因路径权限问题没有正确写入配置,可手动指定配置文件路径执行凭证拉取:
az aks get-credentials --resource-group <资源组名称> --name <集群名称> --file ~/.kube/config
内容的提问来源于stack exchange,提问作者Sapnandu
相关产品推荐
相关产品推荐

