重置k8s集群

如果k8s集群坏了,不需要御载k8s软件( yum remove -y kubelet kubeadm kubect ),

只需要重置集群,清空数据就可以了。

御载软件与重置集群的区虽:

kubeadm reset + rm -rf:只清集群状态、配置、数据,不删软件包,适合 “重装集群但保留 kubelet/kubeadm”。
yum remove:只卸载软件包,不清空集群残留数据 / 配置,适合 “彻底卸载 k8s”。

 

先备份所有MapConfig数据

如果没有 MapConfig 数据,可以不做此操作。

kubectl get cm -A -o yaml > cm-all.yaml

 

重置集群:

# 1. 重置集群(关键)
kubeadm reset -f

# 2. 强删残留(保险)
rm -rf /etc/kubernetes/
rm -rf /var/lib/etcd/
rm -rf ~/.kube/
rm -rf /var/lib/kubelet/
rm -rf /etc/cni/net.d/

# 3. (可选)清空 iptables,避免网络冲突
iptables -F && iptables -t nat -F && iptables -t mangle -F

 

重新初始化 k8s的master节点:

 

VER=$(kubeadm version -o short | awk -F: '{print $2}' | tr -d 'v')
kubeadm init \
# 多master节点才需要配置, k8s-master01 换成你自己的主节点的主机名称
# --control-plane-endpoint=k8s-master01 \
# 可选,给 Service 分配 IP 的网段,不写也会自动用 10.96.0.0/16
# --service-cidr=10.96.0.0/16
# 自动抓取kubeadm版本赋值,不用手动填v1.28.2--kubernetes-version=${VER} \
--apiserver-advertise-address=$(hostname -I | awk '{print $1}') \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16

 

把备份的 MapConfig 数据还原回去。

如果没有 MapConfig 数据,可以不做此操作。

kubectl apply -f cm-all.yaml

 

安装网络插件Calico(仅第一个master节点需要安装calico,工作节点与其它worker节点绝对不要安装)

# 先查集群k8s版本
kubectl version

# K8s1.24~1.26+KS3.4版本,安装calico v3.25
# K8s1.27~1.30+KS4.x版本,安装calico v3.27

# 用国内代理下载calico.yaml
curl -O https://ghproxy.net/https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
# 修改KubeSphere固定Pod网段:10.233.64.0/18(默认是192.168.0.0/16,不改装完集群不通网)
sed -i 's#192.168.0.0/16#10.233.64.0/18#g' calico.yaml
# 替换docker.io镜像为国内加速(解决拉取镜像超时)
sed -i 's/docker.io/docker.m.daocloud.io/g' calico.yaml
# 安装calico
kubectl apply -f calico.yaml

 

 

然后join工作节点。

# 在master节点获取中入集群的命令: 

kubeadm token create --print-join-command 

 

然后在工作节点执行 join 命令。 

如果工作节点join的时候报下面这种错误,说明以前加入过master节点,先重置一下节点,然后再 join 。

kubeadm reset -f
rm -rf /etc/kubernetes/
rm -rf /var/lib/kubelet/
rm -rf /var/lib/etcd/

 

[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

join的时候报这种错误,要称删掉之前join的配置数据。

 

posted @ 2026-06-07 21:25  民工黑猫  阅读(21)  评论(0)    收藏  举报