1. 概述

本文介绍如何从 Linux 机器上彻底卸载 Kubernetes。我们将逐步讲解如何删除 Kubernetes 相关的软件包、集群配置、防火墙规则以及 Docker 等相关组件。

  1. 卸载 Kubernetes

Kubernetes 在安装过程中会在系统中生成大量文件,包括日志、配置文件、服务文件等。即使卸载软件包,这些文件也可能残留在系统中,影响后续操作或造成混淆。

以下是一个完整的卸载流程,适用于大多数 Linux 发行版(如 Ubuntu、Debian、Fedora、Red Hat 等)。

2.1 使用 kubeadm reset 重置节点

kubeadm(Kubernetes Admin)是用于初始化和管理 Kubernetes 集群的工具。安装 Kubernetes 时通常会执行 kubeadm init 来初始化主节点,它会生成配置文件、证书、初始化键值存储等。

使用 kubeadm reset 可以撤销这些初始化操作:

$ kubeadm reset

该命令会将节点恢复到初始状态,是卸载 Kubernetes 的第一步。

2.2 卸载 Kubernetes 相关软件包

接下来使用系统包管理器卸载 Kubernetes 相关组件:

# Debian 和 Ubuntu
$ sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*

# Fedora 和 Red Hat
$ sudo dnf remove kubeadm kubectl kubelet kubernetes-cni kube*

然后清理不再需要的依赖项:

# Debian 和 Ubuntu
$ sudo apt autoremove

# Fedora 和 Red Hat
$ sudo dnf autoremove

⚠️ 注意:purge 命令会同时删除配置文件,避免残留。

2.3 删除 Kubernetes 相关文件和目录

虽然 kubeadm reset 会清理大部分文件,但仍有部分文件可能残留,建议手动删除:

$ rm -rf ~/.kube
$ rm -rf /etc/cni /etc/kubernetes rm -f /etc/apparmor.d/docker /etc/systemd/system/etcd*
$ rm -rf /var/lib/dockershim /var/lib/etcd /var/lib/kubelet \
         /var/lib/etcd2/ /var/run/kubernetes

这部分操作属于高风险动作,建议在执行前确认路径内容无误。

2.4 清理防火墙规则

Kubernetes 通常会修改 iptables 规则来实现网络通信。虽然 kubeadm reset 会清理这些规则,但为保险起见,建议手动重置:

$ iptables -F && iptables -X
$ iptables -t nat -F && iptables -t nat -X
$ iptables -t raw -F && iptables -t raw -X
$ iptables -t mangle -F && iptables -t mangle -X

⚠️ 警告:如果你的服务器上还有其他服务依赖 iptables 规则,请谨慎操作,以免误删。

2.5 可选:卸载 Docker

如果你不再需要 Docker,可以一并卸载。首先清理无用的镜像:

$ docker image prune -a

然后重启 Docker 服务:

$ sudo systemctl restart docker

再卸载 Docker 软件包:

# Debian 和 Ubuntu
$ sudo apt purge docker-engine docker docker.io docker-ce docker-ce-cli containerd containerd.io runc --allow-change-held-packages

# Fedora 和 Red Hat
$ sudo dnf remove docker-ce docker-ce-cli containerd.io

清理残留依赖:

# Debian 和 Ubuntu
$ sudo apt autoremove

# Fedora 和 Red Hat
$ sudo dnf autoremove

最后删除 docker 用户组(可选):

$ sudo groupdel docker

2.6 重新加载 systemd 配置

为确保所有 systemd 配置生效,建议执行:

$ sudo systemctl daemon-reload
  1. 总结

总体而言,kubeadm reset 是卸载 Kubernetes 的关键步骤,它会清理大部分配置和状态。但为了彻底卸载,仍需手动删除一些残留文件、清理防火墙规则,并根据需要卸载 Docker。

整个过程虽然繁琐,但能有效避免“卸载不干净”带来的各种问题,尤其是当你计划重新安装或迁移集群时。建议在执行前做好备份和确认操作,避免误删重要数据。


原始标题:Completely Uninstall Kubernetes