本地PC连接Ubuntu主机被拒 SSH登录Rancher后kubectl执行报错求助
W0916 17:12:03.995526 4990 loader.go:221] Config not found: /root/admin.conf
The connection to the server localhost:8080 was refused - did you specify the right host or port?
问题根因
- 你通过SSH登录Rancher服务器时使用的是普通用户,默认无权限读取
/root目录下的admin.conf配置文件,kubectl加载配置失败后会回退到默认的localhost:8080访问地址,该地址没有部署K8s apiserver,因此连接被拒绝。 - 未配置KUBECONFIG环境变量,也未将K8s配置文件放到kubectl默认读取的
~/.kube/config路径下。
解决方案
方案1:永久生效(推荐,安全性更高)
- 先创建kubectl默认读取配置的目录:
mkdir -p ~/.kube - 将root目录下的配置文件复制到当前用户目录:
sudo cp /root/admin.conf ~/.kube/config - 给当前用户授予配置文件的所有权:
sudo chown $(id -u):$(id -g) ~/.kube/config - 执行
kubectl get pods验证功能是否正常,后续该用户登录无需重复操作。
方案2:环境变量配置
- 把配置文件路径写入当前用户的环境变量配置文件,使用bash的用户执行:
echo 'export KUBECONFIG=/root/admin.conf' >> ~/.bashrc;使用zsh的用户执行:echo 'export KUBECONFIG=/root/admin.conf' >> ~/.zshrc - 刷新环境变量:
source ~/.bashrc(zsh用户对应执行source ~/.zshrc) - 给普通用户开放配置文件的读取权限:
sudo chmod +r /root/admin.conf
方案3:临时指定配置(单次命令生效)
如果仅需临时执行少量kubectl命令,可以直接在命令中指定配置文件路径:kubectl --kubeconfig=/root/admin.conf get pods
异常排查
如果完成上述操作后仍报错,执行以下步骤排查:
- 执行
kubectl config view检查输出的server地址是否为你K8s集群apiserver的正确地址 - 确认Rancher服务器到K8s apiserver地址的网络连通性,对应端口未被防火墙、安全组拦截
内容的提问来源于stack exchange,提问作者Summerborn Storm
相关产品推荐
相关产品推荐

