首先,停止所有正在运行的Kubernetes组件服务,避免卸载过程中出现文件占用或进程冲突:
sudo systemctl stop kubelet sudo systemctl stop kube-apiserver sudo systemctl stop kube-controller-manager sudo systemctl stop kube-scheduler sudo systemctl stop kube-proxy 说明:kubelet是Kubernetes节点代理,负责与Master节点通信;其他服务为控制平面组件,需全部停止。
使用kubeadm reset命令清理Kubernetes集群的配置和数据(如etcd数据库、证书、Pod数据等),恢复节点到未加入集群的状态:
sudo kubeadm reset --force 说明:--force参数用于强制执行重置(若集群处于异常状态),避免交互式确认。
通过CentOS的包管理器yum(或dnf,CentOS 8+)卸载Kubernetes核心组件及依赖:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube* 说明:kubeadm用于集群部署,kubelet为节点代理,kubectl为命令行工具,kubernetes-cni为容器网络接口驱动;kube*会匹配并卸载所有以"kube"开头的软件包。
彻底清除Kubernetes的配置文件、证书及数据存储目录,防止残留信息影响后续重新部署:
sudo rm -rf /etc/kubernetes/ # 控制平面配置(如kube-apiserver.yaml、kube-controller-manager.yaml) sudo rm -rf /var/lib/etcd/ # etcd数据库(存储集群状态,默认路径) sudo rm -rf /var/lib/kubelet/ # kubelet数据(如Pod卷、镜像缓存) sudo rm -rf $HOME/.kube/ # 用户级kubeconfig文件(默认路径) 说明:/etc/kubernetes/包含集群配置,/var/lib/etcd/存储集群状态,/var/lib/kubelet/存储节点数据,~/.kube/存储用户访问集群的凭证。
Kubernetes依赖CNI(容器网络接口)实现Pod间网络通信,需删除CNI配置文件及插件目录:
sudo rm -rf /etc/cni/net.d/ # CNI网络配置文件(如flannel、calico的配置) sudo rm -rf /opt/cni/bin/ # CNI插件二进制文件(如flannel、calico的可执行文件) 说明:若使用其他CNI插件(如Calico、Cilium),需确保删除对应插件的数据目录(如/var/lib/calico/)。
若不再需要容器运行时(Kubernetes依赖容器运行时启动Pod),可进一步卸载:
sudo systemctl stop docker sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine sudo rm -rf /var/lib/docker # Docker数据目录(存储镜像、容器、卷) sudo systemctl stop containerd sudo yum remove -y containerd sudo rm -rf /var/lib/containerd # Containerd数据目录 说明:Docker是CentOS上常用的容器运行时,若使用Containerd(Kubernetes原生运行时),需替换对应命令。
Kubernetes会修改iptables规则以实现网络转发,卸载后需清理残留规则,避免影响系统网络:
sudo iptables -F && sudo iptables -X && sudo iptables -t nat -F && sudo iptables -t nat -X && sudo iptables -t mangle -F && sudo iptables -t mangle -X && sudo iptables -P FORWARD ACCEPT 说明:-F清空规则,-X删除自定义链,-P FORWARD ACCEPT设置FORWARD链默认策略为ACCEPT(避免网络中断)。
重启系统以应用所有更改,确保系统恢复到干净状态:
sudo reboot 注意事项:
kubeadm部署,kubeadm reset会自动清理大部分集群数据;journalctl -xe)确认无残留进程。