1. 停止并禁用Kubernetes相关服务
首先停止所有正在运行的Kubernetes服务,防止其在系统重启后自动启动:
sudo systemctl stop kubelet
sudo systemctl disable kubelet
sudo systemctl stop kube-proxy
sudo systemctl disable kube-proxy
# 如果使用Docker作为容器运行时,还需停止Docker服务
sudo systemctl stop docker
sudo systemctl disable docker
2. 卸载Kubernetes核心组件
使用apt-get命令彻底移除Kubernetes及其相关组件(包括kubeadm、kubectl、kubelet和CNI插件):
sudo apt-get purge -y kubeadm kubectl kubelet kubernetes-cni kube*
# 清理无用的依赖包和缓存
sudo apt-get autoremove -y
sudo apt-get autoclean
3. 删除Kubernetes配置文件与数据目录
移除Kubernetes的所有配置文件、证书及数据存储目录,确保无残留配置:
sudo rm -rf /etc/kubernetes/ # Kubernetes主配置目录
sudo rm -rf /etc/cni/net.d/ # CNI网络配置目录
sudo rm -rf /var/lib/kubelet/ # Kubelet数据目录
sudo rm -rf /var/lib/kube-proxy/ # Kube-proxy数据目录
sudo rm -rf /var/lib/etcd/ # etcd数据目录(若有使用)
sudo rm -rf ~/.kube/ # 用户kube配置目录(~/.kube/config等)
4. 清理容器运行时(若使用Docker)
如果使用Docker作为容器运行时,需清理Docker中的Kubernetes相关镜像、容器及配置:
# 清理所有未使用的Docker资源(镜像、容器、网络、卷)
sudo docker system prune -af --volumes
# 删除Kubernetes专用镜像(可根据实际镜像名称调整)
sudo docker rmi -f $(docker images | grep -E 'k8s.gcr.io|kubernetes' | awk '{print $3}')
# 删除Docker配置目录
sudo rm -rf /etc/docker/
sudo rm -rf /var/lib/docker/
5. 清理网络配置
删除Kubernetes创建的网络接口、CNI配置及iptables规则,避免网络残留:
# 删除Kubernetes创建的网络接口(如cni0、flannel.1等)
ip link | grep -E 'cni0|flannel' | awk '{print $2}' | sed 's/://g' | xargs -r -n1 ip link delete
# 清空iptables规则(包括nat、mangle表)
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
# 重置iptables默认策略(可选,根据需求调整)
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
6. 重启系统
重启系统以应用所有更改,确保残留进程和服务被彻底终止:
sudo reboot
7. 验证卸载结果
重启后,通过以下命令验证Kubernetes是否已完全卸载:
kubectl get nodes # 应返回“command not found”或“No resources found”
kubeadm version # 应返回“command not found”
kubelet --version # 应返回“command not found”
注意事项
/var/lib/etcd/(etcd数据)、/var/lib/kubelet/pods/(Pod数据)等重要目录,避免数据丢失。sudo systemctl stop containerd、sudo rm -rf /var/lib/containerd/)。calicoctl delete命令)。