KubeSphere 在最小化安装时,默认使用 OpenEBS Local PV 作为存储类型(StorageClass
local)。所有 PVC 数据最终落在 host 节点的本地磁盘上,默认路径为/var/openebs/local/。
一、为什么是 /var/openebs/local/
OpenEBS Local PV 的工作机制:
PVC (Pod 申请存储)
↓
StorageClass "local" / openebs.io/local
↓
OpenEBS Local PV Provisioner
↓
在 host 节点 /var/openebs/local/ 下自动创建子目录
↓
通过 hostPath 把子目录挂载进 Pod
与 NFS、CSI 等网络存储不同,Local PV 数据只在单个节点本地,Pod 漂移到其他节点就读不到。
二、查看 PVC 数据在哪
2.1 查 PVC 实际挂载到哪个 host
# 看 PVC 绑定到哪个 PV
kubectl get pvc -A -o wide
# 看 PV 的 hostPath 路径
kubectl get pv -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.local.path}{"\n"}{end}'
2.2 直接进节点查看
# 进节点
ssh node-1
# 看 openebs local 下的所有 PVC 数据
ls /var/openebs/local/
# 典型输出
pvc-0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d
pvc-1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e
...
每个 pvc-xxx 子目录对应一个 PVC 的数据。
2.3 查看某个 PVC 占用的空间
du -sh /var/openebs/local/pvc-<id>
三、实战场景
3.1 PVC 数据误删恢复
Local PV 的 reclaimPolicy 默认是 Delete,PVC 删除后子目录会被 Provisioner 一起清掉——这是 Local PV 最危险的特性。
生产建议:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local
provisioner: openebs.io/local
reclaimPolicy: Retain # 改为 Retain,防止误删
volumeBindingMode: WaitForFirstConsumer
改成 Retain 后,PVC 删除只会释放 PV 绑定,子目录数据保留,你可以手工备份后再清理。
3.2 节点磁盘满了怎么办
# 1. 找出哪些 PVC 占空间最大
du -sh /var/openebs/local/* | sort -hr | head -10
# 2. 找这些 PVC 是哪个 Pod 在用
kubectl get pvc -A | grep <pvc-name>
# 3. 评估:删除 PVC 还是扩容 host 节点
3.3 PVC 数据迁移到新节点
Local PV 数据无法直接迁移(没有网络访问能力),只有两种方案:
- 应用层导出/导入:在 Pod 内
kubectl exec跑备份命令(如mysqldump、pg_dump) - 重建 PVC:新节点上建新 PVC,应用启动后从备份恢复
四、常见问题
| 问题 | 原因 | 处理 |
|---|---|---|
Pod 一直 Pending,提示找不到节点 |
Local PV 绑死在原节点,新节点无对应路径 | 用 WaitForFirstConsumer 模式或手动调度 |
/var/openebs/local 占满 host 磁盘 |
Local PV 数据全在本地,无容量回收 | 扩容 host 或迁移到 NFS/Ceph |
| 节点宕机后 PVC 数据丢失 | Local PV 没有副本,只有一份 | 重要业务用网络存储(NFS/Ceph) |
想改默认路径(如 /data/openebs) |
helm 部署时改 hostpath | 见下 |
自定义默认路径
KubeSphere 安装时若使用 local 模式,可在 cluster-configuration.yaml 中修改:
openebs:
hostpath:
path: /data/openebs # 自定义路径
⚠️ 生产环境慎用 Local PV:无高可用、无跨节点共享、性能看单盘 IOPS。KubeSphere 文档也只推荐用于开发测试或非关键业务。生产用 NFS、Ceph 或云厂商块存储。
相关阅读
- K8s 使用 NFS 作为容器存储插件 — 生产环境推荐的网络存储方案
- Ubuntu LVM 系统盘剩余容量扩充到 root 分区 — host 磁盘满了怎么扩