Kubernets-Restore-Cert-Fix-5.7

Kubernets-Restore-Cert-Fix-5.7

查看完整日志,定位Real errors

1
2
3
4
# 查看 kubelet 完整启动日志
journalctl -u kubelet -l --no-pager
# 或实时滚动日志
journalctl -u kubelet -f

Process:

🔥 问题!

两个致命错误,导致 kubelet 启动失败:

  1. 证书过期bootstrap client certificate is expired(证书 2026-01-11 就过期了)
  2. 配置文件丢失/etc/kubernetes/bootstrap-kubelet.conf: no such file or directory

集群证书失效 + 配置文件损坏直接重置主节点


✅ Solution

第一步:清理损坏的集群(主节点执行)

1
2
3
4
5
6
7
8
# 停止 kubelet
systemctl stop kubelet

# 重置 kubeadm 集群
kubeadm reset -f

# 强制清理所有残留文件(关键!)
rm -rf /etc/kubernetes/ /var/lib/etcd/ /var/lib/kubelet/ /root/.kube/

第二步:重新初始化主节点

主节点 IP 192.168.107.100 用上:

1
2
3
4
5
kubeadm init \
--apiserver-advertise-address=192.168.107.100 \
--kubernetes-version v1.17.4 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all

第三步:恢复 kubectl 配置

1
2
3
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

第四步:安装网络插件(flannel)

1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

第五步:检查恢复状态

1
2
kubectl get nodes
kubectl get pods -n kube-system

🔁 从节点重新加入集群

初始化完成后,控制台会输出 kubeadm join 命令,复制下来,去两台从节点分别执行,就能重新加入集群。

🔥 一、 master主节点

1
kubeadm token create --print-join-command

🔥 二、从节点(node1、node2)

Node1

🔍 报错原因

节点 node1 上残留了旧的 Kubernetes 配置文件,导致 kubeadm join 执行预检时失败:

1
2
/etc/kubernetes/kubelet.conf already exists
/etc/kubernetes/pki/ca.crt already exists

之前集群残留的,kubeadm 为了防止冲突,会拒绝加入操作。

✅ Node1

1. 重置旧配置,清残留

1
2
3
4
# 重置 kubeadm 状态
kubeadm reset -f
# 强制删除所有残留的配置文件
rm -rf /etc/kubernetes/ /var/lib/kubelet/ /var/lib/etcd/ /root/.kube/

2. again执行 join 命令

1
kubeadm join 192.168.107.100:6443 --token eqa5wr.iel9zqma9qbtg44r --discovery-token-ca-cert-hash sha256:76a485be101c49db1facdf59d57d0be18751ef621d020c9403a05e4375c61d84

✅ Node2

Node2

主节点查看

🔥 三、主节点查看集群

🔍 KubePi平台 显示修复

集群在命令行已经恢复正常,但 KubePi 里显示异常

核心原因是:KubePi 还在使用旧的集群配置,没有更新你重置后的新 kubeconfig

1. 根本原因

KubePi 是通过 kubeconfig 文件连接集群的,重置主节点后:

  • /etc/kubernetes/admin.conf 证书和配置已经更新
  • KubePi 里保存的还是旧的、过期的 kubeconfig,导致它无法正常连接集群,所以显示“异常”。

2. 修复

步骤1:导出主节点最新的 kubeconfig

master 节点上执行,导出新的配置文件:

1
cat /etc/kubernetes/admin.conf

复制输出的全部内容(从 apiVersion: v1 开始,到最后一行结束)。

步骤2:在 KubePi 里更新集群配置

  1. 在配置文件输入框里,粘贴刚才复制的完整 admin.conf 内容

步骤3:验证状态

Comments

Comments are enabled. Feel free to join the discussion.

Comments will be recorded via GitHub Issues