3. Kubernetes 存储基础:PV/PVC/StorageClass 概念、CSI 驱动与 MinIO Operator 简介

在 Kubernetes 上运行有状态应用(如 MinIO)之前,必须理解其存储抽象层。本章将梳理 PV/PVC/StorageClass 的核心概念、CSI 驱动的插件化机制,以及 MinIO Operator 如何利用这些基础实现自动化部署。

3.1 核心存储抽象:PV、PVC 与 StorageClass

Kubernetes 通过三个资源对象将存储的供给与消费解耦:

资源全称角色生命周期
PVPersistentVolume集群级别的存储资源(由管理员预先创建或动态供给)独立于 Pod,删除 Pod 后 PV 默认保留
PVCPersistentVolumeClaim用户对存储的请求(指定大小、访问模式)与 Pod 绑定,Pod 删除后 PVC 可保留或删除
StorageClassStorageClass存储模板(定义后端类型、回收策略、参数)集群级对象,用于动态 PV 供给
关键关系:PVC 像“订单”,PV 像“库存商品”,StorageClass 像“工厂生产线”。PVC 可以匹配已有的 PV(静态供给),也可以通过 StorageClass 自动创建 PV(动态供给)。

以下流程图展示了静态供给与动态供给的完整路径:

Kubernetes 存储供给流程(静态 vs 动态) 用户创建 PVC 管理员创建 PV PVC 绑定 PV StorageClass 定义 动态供给 PV 静态匹配 动态供给 Pod 挂载 PVC 后端存储(NFS/Ceph/MinIO) 说明 动态供给需先创建 StorageClass

3.2 访问模式与回收策略

PV 和 PVC 的匹配依赖以下关键属性:

  • 访问模式(Access Modes):
    • ReadWriteOnce (RWO) — 单节点读写(最常用,MinIO 默认模式)
    • ReadOnlyMany (ROX) — 多节点只读
    • ReadWriteMany (RWX) — 多节点读写(需要共享存储后端支持)
  • 回收策略(Reclaim Policy):
    • Retain — PVC 删除后 PV 保留,需管理员手动回收
    • Delete — PVC 删除后自动删除 PV 和后端存储
    • Recycle — (已弃用)自动清理后重新可用
MinIO 迁移注意事项:MinIO 的 PVC 通常使用 Retain 策略,防止误删 PVC 导致数据丢失。在透明迁移场景中,源集群的 PV 必须保留,直到数据同步完成。

3.3 CSI 驱动:存储插件化标准

CSI(Container Storage Interface)是 Kubernetes 与存储后端之间的标准接口。任何存储厂商只要实现 CSI 规范,即可无缝接入 Kubernetes。

CSI 驱动的核心组件:

组件部署方式职责
Controller PluginDeployment(1 或 3 副本)处理 CreateVolume/DeleteVolume/Attach/Detach 等控制面操作
Node PluginDaemonSet(每节点一个)处理 Mount/Unmount、设备格式化、挂载点管理
Sidecar 容器与 Controller/Node 同 Pod将 CSI 调用转换为 Kubernetes API 事件(如 external-provisioner、external-attacher)

以下架构图展示了 CSI 驱动在 Kubernetes 中的工作位置:

CSI 驱动架构与数据流 Kubernetes API Server PVC → PV 绑定请求 CSI Controller Plugin CreateVolume / DeleteVolume 存储后端 NFS / Ceph / MinIO CSI 调用 CSI Node Plugin Mount / Unmount Pod(MinIO 实例) Attach 通知 Sidecar 容器 external-provisioner external-attacher

3.4 MinIO Operator 简介

MinIO Operator 是 MinIO 官方提供的 Kubernetes 原生 Operator,它利用上述存储基础实现 MinIO 集群的自动化部署、扩缩容、升级和配置管理。

Operator 的核心能力:

  • 自动创建 PVC — 根据 Tenant CRD 中声明的存储大小和 StorageClass,自动生成 PVC 并绑定到 MinIO Pod。
  • 多池(Pool)管理 — 支持多个存储池,每个池可独立指定节点选择器、存储类和副本数。
  • 证书与密钥轮换 — 自动管理 MinIO 的 TLS 证书和访问密钥。
  • 升级回滚 — 支持 MinIO 版本的滚动升级和快速回滚。
透明迁移中的 Operator 角色:在迁移方案中,MinIO Operator 负责在目标集群中创建与源集群一致的 Tenant 配置(包括 PVC 模板、StorageClass 名称、访问模式),确保新集群的存储布局与源集群兼容,从而降低数据同步的复杂度。

3.5 本章小结

概念对 MinIO 迁移的意义
PV / PVCMinIO 数据卷的持久化载体,迁移时需保持 PV 的 Retain 策略
StorageClass定义后端存储类型,迁移时目标集群需创建同名或兼容的 StorageClass
CSI 驱动提供统一的存储挂载接口,确保 MinIO Pod 在不同集群间挂载行为一致
MinIO Operator自动化管理 MinIO 集群的生命周期,是透明迁移方案的核心编排工具