1. 课程导入与全景认知

在 Kubernetes 与容器化应用大规模落地的今天,一个绕不开的现实问题是:容器本身是无状态的、可随时销毁重建的,但数据库、消息队列、日志检索、AI 训练数据集这类有状态工作负载,必须把数据落到真正持久、可靠、可迁移的存储上。这就是容器持久化存储(Persistent Storage for Containers)要解决的核心命题。本课程围绕 HPE Alletra 存储平台,讲解它如何通过 CSI(Container Storage Interface)驱动与 Kubernetes 对接,为容器提供企业级持久卷能力。

要理解 HPE Alletra 的定位,先要看清它在整个存储栈中的位置。容器持久化存储大致分为三层:最上层是 Kubernetes 的存储抽象(PV、PVC、StorageClass、VolumeSnapshot),中间层是 CSI 插件(负责把 K8s 的存储请求翻译成后端存储的 API 调用),最下层是真正的存储系统(提供块、文件、快照、克隆、复制等能力)。HPE Alletra 属于最下层,同时 HPE 提供了对应的 CSI 驱动,把 Alletra 的块存储能力暴露给 K8s。下图展示了这一分层关系与数据路径。

容器持久化存储分层与 HPE Alletra 定位 ① Kubernetes 存储抽象层 StorageClass PVC 请求 PV 绑定 VolumeSnapshot Pod 挂载卷 CSI 接口调用 ② HPE CSI 驱动层(Controller + Node 插件) Controller 插件 CreateVolume / DeleteVolume Node 插件 NodeStage / NodePublish 快照 / 克隆 / 扩容 Snapshot / Clone / Resize REST API / iSCSI / FC ③ HPE Alletra 存储平台 块存储卷 精简 / 厚置备 快照与克隆 秒级一致性点 复制与容灾 同步 / 异步 QoS 与性能 IOPS / 时延

从图中可以看到,K8s 侧只关心“我要一个 100Gi 的 ReadWriteOnce 卷”,而 CSI 驱动负责把这个声明翻译成 Alletra 上的实际卷创建动作,并把它挂载到目标节点。理解这条链路,是后续所有实验和排障的基础。

HPE Alletra 的核心价值

为什么在众多存储方案中选择 HPE Alletra 做容器持久化?可以从四个维度理解它的价值。

  • 企业级可靠性:Alletra 提供多控制器冗余、双活路径、数据校验与自动故障切换,容器卷不会因为单点硬件故障而丢失数据。
  • 性能与 QoS:支持为不同 PVC 设置性能上限,避免某个批处理任务把存储带宽吃满,影响在线业务。
  • 数据服务能力:快照、克隆、远程复制这些能力可以直接通过 CSI 暴露给 K8s,用于数据库备份、测试环境快速搭建、跨站点容灾。
  • 统一管理:通过 HPE GreenLake / Data Services Cloud Console 统一管理存储资源,容器卷和传统虚机卷在同一平台可见。

需要强调的是,Alletra 并不是“为容器专门造的新存储”,而是把成熟的企业存储能力通过 CSI 标准化接口开放给容器平台。这意味着容器工作负载可以获得与传统关键业务同等级的数据保护。

学习路径

本课程共 30 章,建议按“认知 → 部署 → 使用 → 运维 → 进阶”的顺序推进。前几章建立全景认知与环境准备;中间章节深入 CSI 驱动部署、StorageClass 定义、PVC 动态供给、快照与克隆;后续章节覆盖扩容、监控、故障排查、多集群与容灾场景。每一章都会给出可操作的命令、参数和判断依据,而不是停留在概念层面。

实验环境准备

为了让后续实验可复现,这里给出一个参考环境。请注意,以下参数属于教学示例配置,实际部署时应根据你的集群规模和存储阵列型号调整。

组件示例配置说明
Kubernetes 集群v1.28,3 个 worker 节点支持 CSI 与 VolumeSnapshot
容器运行时containerd 1.7需启用 mount propagation
HPE AlletraAlletra 6000,双控制器提供 iSCSI 数据路径
CSI 驱动hpe-csi-driver v2.x通过 Helm 部署
管理网络10.10.20.0/24K8s 节点访问阵列管理口
数据网络10.10.30.0/24iSCSI 数据路径

部署前需要确认几个前提条件:所有 worker 节点已安装 iSCSI initiator(iscsid 服务运行中);节点能解析并访问 Alletra 的管理 IP;集群已启用 CSISnapshot 相关 CRD。可以用下面的命令快速检查:

# 检查 iSCSI 服务
systemctl status iscsid

# 检查节点是否识别到 CSI 相关 CRD
kubectl get crd | grep -E "volumesnapshot|csidriver"

# 查看集群节点状态
kubectl get nodes -o wide
建议在实验前为 Alletra 创建一个专用的存储池(Pool)和主机组(Host Group),把 K8s 节点的 iSCSI IQN 加入主机组,避免与生产卷混用。这样即使实验出错,也不会影响其他业务。
不要在生产集群上直接做快照删除、卷扩容等破坏性实验。建议使用独立的测试命名空间,并在操作前确认 PVC 的回收策略(ReclaimPolicy)是 Delete 还是 Retain。