Skip to content

赛博拆迁办:安全切断外接大水管 (卸载 NFS 动态供应器)

🌱 创建: 2026/04/22 ⏱️ 更新: 2026/05/22

This content is not available in your language yet.

在赛博工地,拆迁工作也分危险等级。如果说卸载 Longhorn 相当于“定向爆破承重墙”,那么卸载 NFS 动态供应器仅仅相当于**“辞退了一个水管工”**。

因为 NFS 的实际数据都安全地躺在你远端的 TrueNAS 或群晖里,K3s 集群内运行的仅仅是一个负责“自动建文件夹和接管子”的调度程序(Provisioner)。所以,它的卸载过程非常轻松且无痛。

尽管如此,为了保证集群状态的绝对干净,包工头还是建议你按照标准协议进行拆除。

⚠️ 拆除前置:清退依赖水管的租客

Section titled “⚠️ 拆除前置:清退依赖水管的租客”
安全规范

在辞退水管工之前,最好先确认集群里是否还有应用正在使用 nfs-client 这个存储类(StorageClass)。

如果还有应用在用,当你卸载了供应器后,这些应用原本挂载的旧硬盘虽然还能读写,但未来如果它们意外重启或者你需要扩容,由于失去了“水管工”的调度,它们可能会陷入异常状态。

检查指令:

Terminal window
# 查看是否还有绑定到 nfs-client 的 PVC(存储声明)
kubectl get pvc -A | grep nfs-client

(如果输出为空,说明水管已经全部闲置,可以放心开拆。如果还有业务在使用,请先决定是保留业务,还是将其连同 PVC 一并删除。)


  1. 呼叫 Helm 拆迁队 (Uninstall Provisioner)

    因为我们是使用 Helm 规范化部署的,直接用一条命令就可以把水管工(Pod)、它的权限(RBAC)以及图纸代号(StorageClass)全部带走:

    Terminal window
    helm uninstall nfs-provisioner -n kube-system

    预期输出:release "nfs-provisioner" uninstalled。此时,K8s 已经失去了自动在 NAS 上划分目录的能力。

  2. 打扫物理 NAS 的残余数据 (Manual Cleanup)

    还记得我们在上一篇配置 values.yaml 时,特意加了一个防爆机制 archiveOnDelete: true 吗?

    正是因为这个机制,即使你之前在 K8s 里删除了测试用的 PVC,水管工也不会真的去删你 NAS 里的数据,而是会将那个文件夹重命名,加上 archived- 前缀。

    现在,水管工已经被我们辞退了,这部分“赛博垃圾”就需要你手动去清理了:

    • 登录你物理 NAS 的后台(TrueNAS / 群晖)。
    • 打开文件管理器,进入你分配给 K8s 的那个共享根目录(例如 /mnt/pool/k8s_nfs)。
    • 你会看到一些名字带有 archived- 开头的文件夹。如果你确认这些数据都已经没用了,直接在 NAS 后台右键 -> 删除即可,彻底释放物理空间。
  3. 清理本地 Helm 仓库 (可选)

    如果你有极度的强迫症,不想在本地电脑上留下任何痕迹,可以顺手把官方的图纸源也删掉:

    Terminal window
    helm repo remove nfs-subdir-external-provisioner

最后,敲下这行命令,看看 K8s 的“存储物资局”里还有没有这张图纸:

Terminal window
kubectl get storageclass

如果输出的列表中已经找不到 nfs-client,且终端里没有任何关于 nfs-provisioner 的报错,那么恭喜你,这根外接大水管已经被安全、干净地彻底切断!

Last updated: