在卸载前,需先停止所有Kubernetes相关服务,避免进程残留。执行以下命令:
sudo systemctl stop kubelet
sudo systemctl disable kubelet # 禁用开机自启(可选但推荐)
若使用Docker作为容器运行时,还需停止Docker服务:
sudo systemctl stop docker
使用CentOS的包管理器yum(或CentOS 8+的dnf)卸载Kubernetes核心组件及依赖:
sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube* # CentOS 7
# 或(CentOS 8+)
sudo dnf remove -y kubeadm kubelet kubectl kubernetes-cni kube*
kube*通配符可确保卸载所有以"kube"开头的软件包,避免遗漏。
Kubernetes的配置文件和数据存储在特定目录中,需彻底删除以清除集群状态:
sudo rm -rf /etc/kubernetes/ # 集群配置目录(含kube-apiserver、kube-controller-manager等配置)
sudo rm -rf /var/lib/kubelet/ # kubelet工作目录(含Pod数据、卷挂载信息)
sudo rm -rf /var/lib/etcd/ # etcd数据目录(etcd是Kubernetes的键值存储,存储集群状态)
sudo rm -rf ~/.kube/ # 当前用户的kubeconfig配置文件(含集群访问凭证)
CNI(容器网络接口)负责Pod网络通信,卸载时需清理其配置及残留网络接口:
sudo rm -rf /etc/cni/net.d/ # CNI配置文件目录(含Calico、Flannel等网络插件配置)
sudo rm -rf /opt/cni/bin/ # CNI插件二进制文件目录(如bridge、host-local等)
# 删除残留的CNI网络接口(如cni0、veth等)
sudo ip link | grep cni | awk '{print $2}' | sed 's/://g' | xargs -r -n1 ip link delete
若不再需要Docker或Containerd,可进一步卸载以释放资源:
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 dnf remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo systemctl stop containerd
sudo systemctl disable containerd
sudo rm -rf /var/lib/containerd /etc/containerd
sudo dnf remove -y containerd # 或使用yum
重启系统可确保所有更改生效,清除临时文件及内核模块残留:
sudo reboot
uninstall_k8s.sh),但需仔细检查脚本内容,避免误删系统文件。kubeadm init)。