1. 停止并禁用Kubernetes相关服务
首先停止所有正在运行的Kubernetes服务,防止其在系统重启后自动启动,避免残留进程影响卸载流程:
sudo systemctl stop kubelet
sudo systemctl disable kubelet
sudo systemctl stop kubeadm
sudo systemctl disable kubeadm
sudo systemctl stop kube-proxy
sudo systemctl disable kube-proxy
若使用Docker作为容器运行时,还需停止Docker服务:
sudo systemctl stop docker # 仅当使用Docker时执行
2. 移除Kubernetes核心组件
使用apt-get命令彻底卸载Kubernetes的核心工具(kubelet、kubeadm、kubectl),并通过autoremove清理无用依赖:
sudo apt-get purge -y kubelet kubeadm kubectl
sudo apt-get autoremove -y
sudo apt-get autoclean # 清理本地缓存
若使用Containerd作为容器运行时,需额外卸载:
sudo systemctl stop containerd
sudo apt-get purge -y containerd.io
sudo rm -rf /var/lib/containerd /etc/containerd # 删除Containerd数据目录
3. 删除Kubernetes配置文件与数据目录
清除Kubernetes的所有配置文件和持久化数据(如集群状态、证书、镜像等),确保无残留信息:
sudo rm -rf /etc/kubernetes/ # Kubernetes主配置目录
sudo rm -rf /etc/cni/net.d # CNI网络插件配置目录
sudo rm -rf /var/lib/kubelet/ # Kubelet数据目录
sudo rm -rf /var/lib/kube-proxy/ # Kube-proxy数据目录
sudo rm -rf /var/lib/etcd/ # etcd数据库目录(若有)
sudo rm -rf /var/log/pods/ # Pod日志目录
sudo rm -rf /var/log/containers/ # 容器日志目录
sudo rm -rf ~/.kube # 用户kube配置目录(若有)
4. 清理网络插件与配置
根据使用的CNI插件(如Calico、Flannel)执行针对性清理,避免网络残留影响后续操作:
sudo apt-get remove -y calico* # 卸载Calico组件
sudo rm -rf /etc/calico/ /var/lib/calico/ # 删除Calico数据目录
sudo apt-get remove -y flannel # 卸载Flannel组件
sudo ip link delete flannel.1 # 删除Flannel虚拟网络接口(若有)
sudo rm -rf /etc/cni/net.d # 删除所有CNI配置文件
5. 重置iptables与网络设置
Kubernetes会修改iptables规则(如端口转发、网络策略),需重置以恢复默认网络状态:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
若使用systemd-resolved,重启以恢复DNS配置:
sudo systemctl restart systemd-resolved
6. 重启系统
重启系统以确保所有更改生效,彻底清除内核级的网络规则和残留进程:
sudo reboot
7. 验证卸载结果
重启后,通过以下命令检查Kubernetes是否已完全卸载:
kubelet --version # 应返回“command not found”
kubeadm version # 应返回“command not found”
kubectl version # 应返回“command not found”
若均无输出,说明Kubernetes集群已成功卸载。