在卸载前,需先停止所有Kubernetes相关服务,避免残留进程影响卸载流程。执行以下命令:
sudo systemctl stop kubelet kube-proxy
# 若使用其他组件(如kube-apiserver、kube-controller-manager等),也需停止
sudo systemctl stop kube-apiserver kube-controller-manager kube-scheduler
停止服务后,建议禁用这些服务以防止自动启动:
sudo systemctl disable kubelet kube-proxy
若集群是通过kubeadm
创建的,可使用kubeadm reset
命令清理集群状态(如etcd数据、证书等),恢复节点至未加入集群的状态:
sudo kubeadm reset -f # 强制重置(若遇到权限问题可添加--force)
执行后,节点上的Kubernetes集群相关配置(如kubelet证书、etcd数据)将被清除。
使用CentOS的包管理器yum
(或dnf
,CentOS 8+)卸载Kubernetes核心组件及依赖:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube*
kubernetes-cni
是Kubernetes默认的网络插件,需一并卸载;kube*
通配符可确保删除所有以"kube"开头的软件包。
彻底删除Kubernetes的配置文件、证书及数据存储目录,避免残留敏感信息:
# 删除集群配置目录(包含kubeconfig、证书等)
sudo rm -rf /etc/kubernetes/
# 删除etcd数据目录(etcd是Kubernetes的键值存储,存储集群状态)
sudo rm -rf /var/lib/etcd/
# 删除kubelet数据目录(包含Pod、容器信息)
sudo rm -rf /var/lib/kubelet/
# 删除用户级kubeconfig文件(位于用户家目录)
sudo rm -rf $HOME/.kube/
若使用了CNI网络插件(如Flannel、Calico),需删除其配置文件及数据目录:
# 删除CNI配置文件(通常位于/etc/cni/net.d/)
sudo rm -rf /etc/cni/net.d/
# 删除CNI插件数据目录(如Flannel的/var/lib/cni/networks/)
sudo rm -rf /var/lib/cni/networks/
若集群使用Docker作为容器运行时,可进一步卸载Docker以清理容器相关数据:
# 停止Docker服务
sudo systemctl stop docker
# 卸载Docker软件包
sudo yum remove -y docker-ce docker-ce-cli containerd.io
# 删除Docker数据目录(包含镜像、容器、卷等)
sudo rm -rf /var/lib/docker/
清理iptables中的残留网络规则(避免影响后续网络配置),并重启系统使所有更改生效:
# 清空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
# 重启系统
sudo reboot
重启后,可通过以下命令检查Kubernetes相关进程及服务是否已完全清除:
# 检查Kubernetes相关进程
ps aux | grep kube
# 检查Kubernetes相关服务状态
systemctl list-units --type=service | grep kube
若无输出,则说明Kubernetes已彻底卸载。