在 Debian 系统上卸载 Kubernetes(K8s)通常需要分步骤清理:kubeadm、kubelet、kubectl、CNI 插件、容器运行时(如 containerd 或 Docker)以及 iptables / 路由规则等。下面给你一套通用、较彻底的卸载流程,适用于 kubeadm 安装的集群节点(控制面或工作节点)。
如果是 kubeadm 安装的集群,先在每个节点执行:
sudo kubeadm reset
该命令会:
如果提示需要加 --force:
sudo kubeadm reset --force
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
如果是 IPVS 模式:
sudo ipvsadm --clear
sudo apt remove -y kubeadm kubelet kubectl
sudo apt purge -y kubeadm kubelet kubectl
清理依赖:
sudo apt autoremove -y
sudo rm -rf \
/etc/kubernetes \
/var/lib/kubelet \
/var/lib/etcd \
/var/lib/cni \
/etc/cni \
/opt/cni
sudo systemctl stop containerd
sudo apt remove -y containerd
sudo apt purge -y containerd
清理数据:
sudo rm -rf /var/lib/containerd
sudo systemctl stop docker
sudo apt remove -y docker.io docker-ce docker-ce-cli
sudo apt purge -y docker.io docker-ce docker-ce-cli
清理数据(⚠️会删除所有容器和镜像):
sudo rm -rf /var/lib/docker
sudo rm -f /etc/apt/sources.list.d/kubernetes.list
sudo rm -f /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo apt update
kubectl drain <node> --ignore-daemonsets
kubectl delete node <node>
然后再在对应节点上执行上面的卸载步骤。
which kubectl
which kubelet
which kubeadm
systemctl status kubelet
如果都没有输出或状态不存在,说明已卸载干净。
sudo kubeadm reset -f
sudo apt purge -y kubeadm kubelet kubectl docker.io containerd
sudo rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd /var/lib/cni /etc/cni /opt/cni /var/lib/containerd /var/lib/docker
sudo iptables -F && sudo iptables -t nat -F
| 场景 | 建议 |
|---|---|
| 单节点测试 | 直接 kubeadm reset |
| 生产节点 | 先 drain 再 delete node |
| 想重装 | 卸载后可直接重新 kubeadm init |
| k3s / microk8s | 卸载方式不同(需单独告诉我) |
如果你愿意,可以告诉我:
我可以给你精确到命令级别的定制方案。