跳到主要内容

卸载

1. 卸载说明

本文档用于完全卸载通过 quick_install.sh 脚本部署的 CSGHub 应用、K3s 集群及相关依赖组件,适用于需要彻底清理环境、重新部署的场景。提供两种卸载方式:

  • 快速卸载(推荐):通过脚本交互式卸载,按需确认各组件的卸载操作
  • 手动卸载:按步骤逐个卸载各组件,适用于脚本无法完成的场景

重要警告:卸载操作不可逆,会删除所有 CSGHub 数据(数据库、模型、配置等)、K3s 集群资源及相关存储文件,请务必提前备份重要数据后再执行。

2. 前置准备

确认当前部署状态(验证待卸载资源):

# 查看 CSGHub Helm 部署状态
helm list -n csghub

# 查看 K3s 运行状态
systemctl status k3s(Server 节点)
systemctl status k3s-agent(Agent 节点)

# 查看残留 Pod/命名空间
kubectl get pods -A | grep -E "csghub|nfs|nvdp"
kubectl get ns | grep -E "csghub|nfs-provisioner|nvdp"

3. 快速卸载(推荐)

开始卸载

以下命令用于快速卸载通过一键部署安装的 CSGHub 及所有依赖组件,脚本会逐个组件确认后执行卸载。

curl -sfL http://quick-uninstall.opencsg.com | sudo bash

卸载说明

一键卸载脚本将按顺序逐个确认并卸载以下组件:

  • 卸载 CSGHub Helm Chart,清理相关命名空间(csghub/spaces/nfs-provisioner/nvdp)、CRD 和 CoreDNS 自定义配置,移除 Helm 仓库
  • 移除 NVIDIA GPU 节点标签、卸载 NVIDIA 容器工具包及仓库文件(需 --enable-gpu
  • 停止 NFS 服务,移除共享目录和导出配置,卸载 NFS 软件包
  • 运行 K3S 卸载脚本,清理 kubeconfig 文件
  • 移除安装时添加的 sysctl 配置和 /etc/hosts 条目

卸载过程中若某组件失败,可选择重试、跳过或中止。

更多卸载示例

根据实际部署情况,可在卸载命令中添加对应参数,实现个性化卸载:

预览卸载操作

若需先查看将执行的卸载操作而不实际执行,可使用预览模式:

curl -sfL http://quick-uninstall.opencsg.com | sudo bash -s -- --dry-run

卸载时清理 GPU 支持

若部署时启用了 GPU 支持,卸载时需同时清理 GPU 相关组件:

curl -sfL http://quick-uninstall.opencsg.com | sudo bash -s -- --enable-gpu

指定数据目录

若部署时使用了非默认数据目录,卸载时需指定相同目录:

curl -sfL http://quick-uninstall.opencsg.com | sudo bash -s -- --data /var/lib/rancher/k3s

Agent 节点卸载

若当前节点为 Agent 节点,需指定 Server 地址进行卸载:

curl -sfL http://quick-uninstall.opencsg.com | sudo bash -s -- --k3s-server <server_url>

完整参数说明

参数说明默认值
--data <data_dir>安装时使用的数据目录/var/lib/rancher/k3s
--enable-gpu同时卸载 NVIDIA GPU 支持关闭
--enable-nfs-pv同时卸载 NFS 服务器和 Provisioner开启
--k3s-server <server_url>以 Agent 节点身份卸载-
--dry-run仅打印命令不执行关闭
--verbose启用详细日志关闭

4. 开始卸载

4.1 卸载 CSGHub 应用及相关组件

先卸载 CSGHub Helm 应用,再清理相关命名空间和残留资源,避免资源占用。

# 1. 卸载 CSGHub Helm Release(核心操作)
helm uninstall csghub -n csghub

# 2. 删除 CSGHub 相关命名空间(彻底清理该命名空间下所有资源)
kubectl delete ns csghub --ignore-not-found

# 3. 清理 CSGHub 依赖的命名空间(NFS、GPU 插件相关)
kubectl delete ns nfs-provisioner --ignore-not-found
kubectl delete ns nvdp --ignore-not-found

# 4. 清理 CSGHub 相关 CRD(避免残留影响后续部署)
kubectl delete crd -l app.kubernetes.io/name=csghub --ignore-not-found

4.2 卸载 K3s 集群

仅当需要彻底删除 K3s 集群时执行,卸载后集群所有资源(Pod、Service、存储等)将全部删除。

# 卸载 K3s Server 节点(单节点部署默认此操作)
/usr/local/bin/k3s-uninstall.sh

# 若为 Agent 节点,执行以下命令卸载
/usr/local/bin/k3s-agent-uninstall.sh

4.3 清理残留数据和依赖文件

删除 K3s、CSGHub、Helm 相关的残留目录和文件,确保环境彻底干净。

# 1. 删除 K3s 数据目录(核心数据,包含集群配置、存储数据)
rm -rf /var/lib/rancher /etc/rancher

# 2. 删除 CSGHub 残留目录
rm -rf /opt/csghub

# 3. 删除 kubeconfig 和 Helm 配置目录
rm -rf ~/.kube ~/.helm

# 4. 删除 Helm 仓库缓存(可选,若需保留其他 Helm 仓库可跳过)
rm -rf /root/.cache/helm

# 5. 删除卸载日志和登录信息文件(部署脚本生成)
rm -rf quick-install.log login.txt

4.4 清理 NFS 相关残留

删除 NFS 共享目录和服务,避免占用磁盘资源。

# 停止 NFS 服务
systemctl stop nfs-kernel-server(Ubuntu/Debian)
systemctl stop nfs(CentOS/Alpine)

# 禁用 NFS 服务开机自启
systemctl disable nfs-kernel-server(Ubuntu/Debian)
systemctl disable nfs(CentOS/Alpine)

# 删除 NFS 共享目录
rm -rf /data/sharedir

# 删除 NFS 配置文件
sed -i "\|/data/sharedir|d" /etc/exports 2>/dev/null || true
exportfs -rav

4.5 清理 NVIDIA GPU 相关组件(若启用了 GPU 支持)

卸载 NVIDIA 容器工具包和相关依赖,适用于不再使用 GPU 功能的场景。

# Ubuntu/Debian 系统
apt-get remove -y nvidia-container-toolkit nvidia-container-runtime libnvidia-container-tools libnvidia-container1
rm -rf /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
rm -rf /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt-get update

# CentOS/RHEL 系统
dnf remove -y nvidia-container-toolkit nvidia-container-runtime libnvidia-container-tools libnvidia-container1
rm -rf /etc/yum.repos.d/nvidia-container-toolkit.repo
dnf makecache

5. 卸载验证

执行以下命令,无相关输出即表示卸载完成、环境清理干净。

# 验证 Helm 部署是否残留
helm list -A | grep csghub

# 验证 K3s 是否卸载干净
systemctl status k3s || echo "K3s 已卸载"
ls /usr/local/bin/k3s || echo "K3s 二进制文件已删除"

# 验证相关命名空间是否残留
kubectl get ns | grep -E "csghub|nfs|nvdp"

# 验证残留目录是否删除
ls /var/lib/rancher || echo "K3s 数据目录已删除"
ls ~/.kube || echo "kubeconfig 已删除"

6. 常见问题处理

  1. K3S 卸载失败:执行 rm -rf /var/lib/rancher/k3s 后,重新执行卸载脚本。
  2. 命名空间删除卡住:执行 kubectl delete ns csghub --force --grace-period=0 强制删除。
  3. 残留文件无法删除:确认文件无进程占用,执行lsof | grep 文件名 查找占用进程,结束后再删除。

7. 注意事项

  • 卸载操作不可逆,如有必要务必提前备份数据库、配置文件等重要数据。
  • 若仅需重新部署 CSGHub,无需卸载 K3s,只需执行 Helm 卸载和命名空间删除即可。
  • root 权限执行所有命令,避免权限不足导致卸载不彻底。