温馨提示×

如何卸载CentOS上的K8S

小樊
57
2025-09-28 19:26:03
栏目: 智能运维

如何在CentOS上彻底卸载Kubernetes(K8s)

1. 停止Kubernetes相关服务

首先,停止所有正在运行的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节点通信;其他服务为控制平面组件,需全部停止。

2. 重置Kubernetes集群状态(可选但推荐)

使用kubeadm reset命令清理Kubernetes集群的配置和数据(如etcd数据库、证书、Pod数据等),恢复节点到未加入集群的状态:

sudo kubeadm reset --force 

说明--force参数用于强制执行重置(若集群处于异常状态),避免交互式确认。

3. 卸载Kubernetes软件包

通过CentOS的包管理器yum(或dnf,CentOS 8+)卸载Kubernetes核心组件及依赖:

sudo yum remove -y kubeadm kubelet kubectl kubernetes-cni kube* 

说明kubeadm用于集群部署,kubelet为节点代理,kubectl为命令行工具,kubernetes-cni为容器网络接口驱动;kube*会匹配并卸载所有以"kube"开头的软件包。

4. 删除Kubernetes配置文件与数据目录

彻底清除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/存储用户访问集群的凭证。

5. 清理CNI网络配置与插件

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/)。

6. (可选)卸载容器运行时(如Docker/Containerd)

若不再需要容器运行时(Kubernetes依赖容器运行时启动Pod),可进一步卸载:

  • 卸载Docker
    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数据目录(存储镜像、容器、卷) 
  • 卸载Containerd
    sudo systemctl stop containerd sudo yum remove -y containerd sudo rm -rf /var/lib/containerd # Containerd数据目录 

说明:Docker是CentOS上常用的容器运行时,若使用Containerd(Kubernetes原生运行时),需替换对应命令。

7. 清理iptables规则(可选但推荐)

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(避免网络中断)。

8. 重启系统(可选但推荐)

重启系统以应用所有更改,确保系统恢复到干净状态:

sudo reboot 

注意事项

  • 卸载前请备份重要数据(如etcd中的集群状态、容器镜像);
  • 若集群由kubeadm部署,kubeadm reset会自动清理大部分集群数据;
  • 若使用其他CNI插件(如Calico),需参考插件文档清理对应数据;
  • 卸载后建议检查系统日志(journalctl -xe)确认无残留进程。

0