centos

centos如何卸载k8s集群

小樊
38
2025-10-01 00:59:17
栏目: 智能运维

一、停止Kubernetes相关服务

在卸载前,需先停止所有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

二、重置Kubernetes集群状态(可选但推荐)

若集群是通过kubeadm创建的,可使用kubeadm reset命令清理集群状态(如etcd数据、证书等),恢复节点至未加入集群的状态:

sudo kubeadm reset -f  # 强制重置(若遇到权限问题可添加--force)

执行后,节点上的Kubernetes集群相关配置(如kubelet证书、etcd数据)将被清除。

三、卸载Kubernetes软件包

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

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

kubernetes-cni是Kubernetes默认的网络插件,需一并卸载;kube*通配符可确保删除所有以"kube"开头的软件包。

四、删除Kubernetes配置文件与数据目录

彻底删除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网络插件

若使用了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已彻底卸载。

0
看了该问题的人还看了