k8s-系列目录
本文以k8s 1.22.2版本为例。
注意:删除有风险,卸载需谨慎。
- 删除节点中的所有资源
在 Kubernetes 主节点上执行以下命令,删除所有的 Kubernetes 资源和节点:
kubectl delete node --all
kubectl delete namespace --all
然后使用 kubeadm reset
清理 Kubernetes 集群信息:(所有节点执行)
kubeadm reset
- 删除残留文件
rm -rf ~/.kube
rm -rf /etc/kubernetes
rm -rf /var/lib/etcd
rm -rf /var/lib/kubelet
rm -rf /var/lib/kubernetes
rm -rf /var/run/kubernetes
rm -rf /etc/cni/net.d
# 只删除flannel插件
rm -rf /opt/cni/bin/flannel
- 清理 Docker 容器和镜像(可选)
docker rm -f $(docker ps -a -q) # 删除所有容器
docker rmi -f $(docker images -q) # 删除所有镜像
- 清理网络插件(Flannel、Calico 等)
Flannel 和其他网络插件会配置 IP 路由和桥接设置,因此需要移除所有与网络插件相关的规则。
清理 iptables 规则
使用以下命令清除所有 iptables 规则:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
清理 ipvs 规则
如果你的集群使用了 IPVS 模式,则需要清理 IPVS 规则:
ipvsadm --clear
清理网络接口
检查并清理 cni0
和 flannel.1
等接口:
ip link delete cni0
ip link delete flannel.1
清理 kube-proxy 创建的 IP 规则谨慎操作
此命令谨慎操作,会导致服务器路由表清零,服务器连接失败等
ip route flush table main
ip rule del from all fwmark 0x1 lookup main #谨慎操作
- 删除系统服务
rm -f /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
rm -f /etc/systemd/system/kubelet.service
rm -f /usr/bin/kubeadm
rm -f /usr/bin/kubectl
rm -f /usr/bin/kubelet
重新加载 systemd
systemctl daemon-reload
systemctl reset-failed
7. 重启系统网络
最后,重启网络服务,确保所有网络配置生效:
systemctl restart network
8. 验证清理是否成功
可以使用以下命令验证:
-
查看网络接口:确保
cni0
和flannel.1
等接口不存在。ip a
-
检查 iptables 规则:确认
iptables
表已被清空。iptables -L -n -v
-
查看 Docker 容器:确保 Kubernetes 和网络插件的容器未运行。
docker ps -a