运行kubectl命令提示输入用户名密码的问题求助
问题根因
当前kubectl config view返回全空配置,说明当前用户环境下没有配置有效的K8s集群访问凭据,执行命令弹出用户名密码提示,是kubectl默认尝试访问本地localhost:8080端点触发的认证要求,和所谓“默认账号密码”无关——Kubernetes本身不存在通用的公开默认登录凭据,所有认证信息均为集群部署时自定义生成。
操作步骤
按优先级依次尝试以下方案:
- 优先检查kubeadm部署的默认管理员凭据路径
绝大多数用kubeadm部署的K8s集群,会在master节点生成高权限管理员配置文件/etc/kubernetes/admin.conf,直接执行以下命令将其配置为当前用户的kubeconfig即可:
配置完成后执行mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl get nodes验证,如果能正常返回集群节点列表,说明凭据生效,后续执行kubectl create secret generic相关命令不会再弹出认证提示。 - 若找不到admin.conf,按集群部署类型匹配默认配置路径
- K3s发行版:默认管理员配置路径为
/etc/rancher/k3s/k3s.yaml,拷贝到$HOME/.kube/config并修改属主即可使用 - RKE发行版:执行
rke up部署的工作目录下会生成kube_config_cluster.yml,直接将该文件作为kubeconfig使用即可 - 云厂商托管K8s(ACK/EKS/GKE等):登录对应云平台的容器服务控制台,重新下载管理员权限的kubeconfig配置到本地即可
- K3s发行版:默认管理员配置路径为
- 若以上路径均无有效配置,直接利用服务器本地权限重建管理员凭据
你当前已经拥有服务器操作系统的登录权限,可以直接登录K8s的master节点,查看kube-apiserver的启动参数定位认证配置:- 执行
ps aux | grep kube-apiserver查看启动参数,若配置了--basic-auth-file或--token-auth-file,直接查看对应文件内容即可获取存量的用户名、密码或访问token - 若为客户端证书认证模式,直接利用集群根CA重新签发管理员组的客户端证书,生成新的高权限kubeconfig即可,无需依赖历史遗留的账号密码。
- 执行
注意:不需要尝试搜索公开的K8s默认账号密码组合,不存在适配所有集群的通用默认凭据,这类尝试完全无效。
内容的提问来源于stack exchange,提问作者Matt R
相关产品推荐
相关产品推荐

