执行sudo kubectl get nodes报错localhost:8080连接拒绝且无admin.conf如何解决
缺失文件的核心原因
- Kubespray部署流程未执行完成:如果部署Playbook在控制平面初始化环节(证书生成、kubeadm初始化)出现报错中断,不会触发/etc/kubernetes目录及内部配置文件的创建逻辑,可回溯部署时的执行日志排查是否有fatal级错误。
- 节点角色配置错误:如果在Kubespray的inventory主机清单中,当前登录的节点未被划入
kube_control_plane(控制平面/ master角色)分组,仅作为普通worker节点的情况下,默认不会生成admin.conf及对应目录。
路径正确性确认
你查找的路径没有错误,标准Kubernetes控制平面节点的admin.conf默认存放路径就是/etc/kubernetes/admin.conf。你可以执行hostname命令核对当前节点的主机名/IP,确认是否和你规划的master节点一致。
解决方案
- 核对主机清单配置:打开你部署时使用的Kubespray inventory文件,确认目标master节点已经被加入
kube_control_plane分组,而非仅存在于kube_node(worker节点)分组。 - 重新执行部署流程:回到执行Kubespray部署的操作节点(通常为本地机器或运维跳板机),重新执行集群部署Playbook:
ansible-playbook -i 你的inventory路径/hosts.yaml cluster.yml,执行前可加-C参数做模拟运行,确认会在控制平面节点生成对应配置。 - 配置kubectl访问权限:部署成功后登录master节点,执行如下命令配置普通用户的kubectl访问权限:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行完成后运行kubectl get nodes即可正常返回集群节点信息。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

