分析
kubectl get node --v=8
看到访问8080,其实很奇怪。检查发现没有~/.kube/config,,,find全局找了一下不在root用户下了。
如果彻底没有的话
你这个情况很常见 👍,在使用 kubeadm 安装的 Kubernetes 集群中,如果 ~/.kube/config
丢失或者没生成,可以通过 apiserver 的原始配置重新生成。
下面是几种常见恢复方式:
🔹 方法一:从 /etc/kubernetes/admin.conf
复制
kubeadm init
初始化时,其实已经生成了 admin.conf 文件,它就是 kubeconfig 文件,只是没有复制到 $HOME/.kube/config
。
执行以下命令即可恢复:
# 确保目标目录存在
mkdir -p $HOME/.kube
# 复制 kubeadm 初始化生成的配置文件
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# 修改权限为当前用户
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证是否生效:
kubectl cluster-info
kubectl get nodes
🔹 方法二:重新生成 kubeconfig
如果 /etc/kubernetes/admin.conf
也丢了,可以重新生成:
# 重新导出 admin kubeconfig
sudo kubeadm init phase kubeconfig admin --config=/etc/kubernetes/kubeadm-config.yaml
注意:必须有
kubeadm init
时的配置文件(通常保存在/etc/kubernetes/kubeadm-config.yaml
),否则需要手动补充 apiserver 信息和证书。
生成后,/etc/kubernetes/admin.conf
会被覆盖或重建,再复制到 $HOME/.kube/config
即可。
🔹 方法三:手动创建 kubeconfig
如果 admin.conf
和 kubeadm-config.yaml
都找不到,只能手动生成。需要准备:
- 集群的 CA 证书 和私钥(一般在
/etc/kubernetes/pki/ca.crt
、/etc/kubernetes/pki/ca.key
) - apiserver 地址(一般是
https://<master-ip>:6443
)
然后使用 kubectl config set-cluster
/ kubectl config set-credentials
/ kubectl config set-context
构建 kubeconfig:
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--embed-certs=true \
--server=https://<master-ip>:6443
kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/pki/admin.crt \
--client-key=/etc/kubernetes/pki/admin.key \
--embed-certs=true
kubectl config set-context kubernetes-admin@kubernetes \
--cluster=kubernetes \
--user=admin
kubectl config use-context kubernetes-admin@kubernetes
✅ 推荐优先尝试方法一,最快最保险;
✅ 如果 admin.conf 丢了,用 方法二 重新生成;
✅ 最后再考虑 方法三 手动创建。