赛博拆迁办:安全切断外接大水管 (卸载 NFS 动态供应器)
在赛博工地,拆迁工作也分危险等级。如果说卸载 Longhorn 相当于“定向爆破承重墙”,那么卸载 NFS 动态供应器仅仅相当于**“辞退了一个水管工”**。
因为 NFS 的实际数据都安全地躺在你远端的 TrueNAS 或群晖里,K3s 集群内运行的仅仅是一个负责“自动建文件夹和接管子”的调度程序(Provisioner)。所以,它的卸载过程非常轻松且无痛。
尽管如此,为了保证集群状态的绝对干净,包工头还是建议你按照标准协议进行拆除。
⚠️ 拆除前置:清退依赖水管的租客
Section titled “⚠️ 拆除前置:清退依赖水管的租客”在辞退水管工之前,最好先确认集群里是否还有应用正在使用 nfs-client 这个存储类(StorageClass)。
如果还有应用在用,当你卸载了供应器后,这些应用原本挂载的旧硬盘虽然还能读写,但未来如果它们意外重启或者你需要扩容,由于失去了“水管工”的调度,它们可能会陷入异常状态。
检查指令:
# 查看是否还有绑定到 nfs-client 的 PVC(存储声明)kubectl get pvc -A | grep nfs-client(如果输出为空,说明水管已经全部闲置,可以放心开拆。如果还有业务在使用,请先决定是保留业务,还是将其连同 PVC 一并删除。)
🚜 核心拆除作业
Section titled “🚜 核心拆除作业”-
呼叫 Helm 拆迁队 (Uninstall Provisioner)
因为我们是使用 Helm 规范化部署的,直接用一条命令就可以把水管工(Pod)、它的权限(RBAC)以及图纸代号(StorageClass)全部带走:
Terminal window helm uninstall nfs-provisioner -n kube-system预期输出:
release "nfs-provisioner" uninstalled。此时,K8s 已经失去了自动在 NAS 上划分目录的能力。 -
打扫物理 NAS 的残余数据 (Manual Cleanup)
还记得我们在上一篇配置
values.yaml时,特意加了一个防爆机制archiveOnDelete: true吗?正是因为这个机制,即使你之前在 K8s 里删除了测试用的 PVC,水管工也不会真的去删你 NAS 里的数据,而是会将那个文件夹重命名,加上
archived-前缀。现在,水管工已经被我们辞退了,这部分“赛博垃圾”就需要你手动去清理了:
- 登录你物理 NAS 的后台(TrueNAS / 群晖)。
- 打开文件管理器,进入你分配给 K8s 的那个共享根目录(例如
/mnt/pool/k8s_nfs)。 - 你会看到一些名字带有
archived-开头的文件夹。如果你确认这些数据都已经没用了,直接在 NAS 后台右键 -> 删除即可,彻底释放物理空间。
-
清理本地 Helm 仓库 (可选)
如果你有极度的强迫症,不想在本地电脑上留下任何痕迹,可以顺手把官方的图纸源也删掉:
Terminal window helm repo remove nfs-subdir-external-provisioner
🔍 拆除验收
Section titled “🔍 拆除验收”最后,敲下这行命令,看看 K8s 的“存储物资局”里还有没有这张图纸:
kubectl get storageclass如果输出的列表中已经找不到 nfs-client,且终端里没有任何关于 nfs-provisioner 的报错,那么恭喜你,这根外接大水管已经被安全、干净地彻底切断!