k8s系列-k8s卸载

533 阅读2分钟

k8s-系列目录

k8s-系列教程-目录

本文以k8s 1.22.2版本为例。

注意:删除有风险,卸载需谨慎。

  1. 删除节点中的所有资源

在 Kubernetes 主节点上执行以下命令,删除所有的 Kubernetes 资源和节点:

kubectl delete node --all
kubectl delete namespace --all

然后使用 kubeadm reset 清理 Kubernetes 集群信息:(所有节点执行)

kubeadm reset 
  1. 删除残留文件
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
  1. 清理 Docker 容器和镜像(可选)
docker rm -f $(docker ps -a -q)       # 删除所有容器
docker rmi -f $(docker images -q)     # 删除所有镜像
  1. 清理网络插件(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

清理网络接口

检查并清理 cni0flannel.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 #谨慎操作
  1. 删除系统服务
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. 验证清理是否成功

可以使用以下命令验证:

  • 查看网络接口:确保 cni0flannel.1 等接口不存在。

    ip a
    
  • 检查 iptables 规则:确认 iptables 表已被清空。

    iptables -L -n -v
    
  • 查看 Docker 容器:确保 Kubernetes 和网络插件的容器未运行。

    docker ps -a