1. Kubernetes 存储概述

1.1 Kubernetes 存储体系全景图

Kubernetes 存储体系并非单一组件,而是一个由 存储介质、接入层、编排层 和 用户接口层 构成的四层模型。理解这一全景图是掌握存储架构的基础。

核心观点:Kubernetes 存储的本质是“声明式存储资源管理”——用户描述存储需求,控制平面负责将需求映射到实际存储后端。
Kubernetes 存储体系全景图(四层模型) 用户接口层 PVC(PersistentVolumeClaim)| StorageClass | Pod Volume 声明 用户通过 YAML/CLI/API 声明存储需求,不关心后端实现 编排层(控制平面) PV Controller | Attach/Detach Controller | Volume Manager 处理 PVC→PV 绑定、卷调度、挂载/卸载决策 接入层(CSI / In-Tree 插件) CSI Driver | FlexVolume | In-Tree Volume Plugin 将 Kubernetes 卷操作翻译为存储后端 API 调用 存储后端层 NFS | Ceph RBD | AWS EBS | GCE PD | vSphere | Local SSD 实际存储硬件或分布式存储系统 用户只与第1层交互 控制平面协调第2~3层 第4层对用户透明

1.2 存储与计算分离的设计哲学

Kubernetes 存储架构最根本的设计原则是 存储与计算分离(Storage-Compute Separation)。这一哲学源自云原生对弹性、可移植性和故障域隔离的追求。

维度 传统单体架构 Kubernetes 存储与计算分离
生命周期 Pod 与存储绑定,Pod 删除则数据丢失 PV 独立于 Pod 存在,Pod 重建后仍可挂载同一卷
调度约束 应用必须运行在数据所在节点 存储通过网络访问,Pod 可调度到任意节点
故障域 计算故障导致存储不可用 计算节点宕机不影响持久卷数据
扩展性 存储扩容需同时扩容计算资源 存储和计算可独立扩缩容
可移植性 强依赖特定存储硬件 通过 CSI 接口抽象,可切换后端存储
实践启示:在 Kubernetes 中,PersistentVolume(PV)是存储资源,Pod 是计算资源。PV 的创建、回收、扩容完全独立于 Pod 生命周期。这是“存储与计算分离”在 API 层面的直接体现。

1.3 存储架构在 K8s 中的核心地位

存储并非 Kubernetes 的“附加功能”,而是与控制平面、调度器、kubelet 并列的 核心子系统。其核心地位体现在以下三个层面:

  • 有状态应用的基础设施:数据库(MySQL、PostgreSQL)、消息队列(Kafka)、缓存(Redis)等有状态工作负载完全依赖 Kubernetes 存储能力。没有成熟的存储架构,Kubernetes 只能运行无状态应用。
  • 控制平面状态持久化:etcd 作为 Kubernetes 控制平面的唯一数据存储,其底层依赖持久化存储。存储的可用性直接决定集群控制平面的健康度。
  • 调度决策的关键输入:调度器在分配 Pod 时,必须考虑卷的拓扑约束(如 topology.kubernetes.io/zone)、卷的挂载冲突(同一卷不能同时读写挂载到多个节点)、以及 CSI 驱动的可用性。
存储架构在 Kubernetes 核心子系统中的位置 Kubernetes 控制平面 API Server 存储资源 CRUD 入口 Scheduler 卷拓扑感知调度 Controller Manager PV/PVC 控制器 etcd 集群状态持久化 存储子系统 Volume Manager | CSI Driver | PV/PVC/StorageClass 存储子系统并非孤立存在:API Server 提供存储资源 API,Scheduler 感知卷拓扑, Controller Manager 执行卷编排,etcd 存储所有持久化状态——存储贯穿整个控制平面。

1.4 关键概念速查表

在深入后续章节前,先建立以下核心术语的清晰认知:

术语 缩写 定义 类比(传统环境)
PersistentVolume PV 集群中的存储资源,由管理员或动态供给创建 物理磁盘 / SAN LUN / NFS 导出
PersistentVolumeClaim PVC 用户对存储的请求,描述大小、访问模式等需求 申请磁盘空间的工单
StorageClass SC 定义存储“类别”(如 SSD、HDD、高性能),包含动态供给参数 存储服务等级协议(SLA)
Container Storage Interface CSI Kubernetes 与存储后端之间的标准插件接口 SCSI 协议 / 设备驱动
Volume — Pod 中挂载的存储单元,生命周期与 Pod 绑定(emptyDir)或独立(PV) 挂载点 / 分区
Access Mode — 卷的读写权限:ReadWriteOnce(RWO)、ReadOnlyMany(ROX)、ReadWriteMany(RWX) 文件共享权限
常见误区:初学者常将 PVC 视为“存储卷”本身。实际上 PVC 只是一个请求,真正的存储资源是 PV。PVC 与 PV 的绑定关系由控制平面自动完成,类似于“申请”与“分配”的关系。

1.5 本章小结

  • Kubernetes 存储体系分为 用户接口层 → 编排层 → 接入层 → 存储后端层,每层职责清晰。
  • 存储与计算分离 是 Kubernetes 存储架构的基石,带来弹性、可移植性和故障隔离。
  • 存储子系统与 API Server、Scheduler、Controller Manager、etcd 深度耦合,是控制平面不可或缺的组成部分。
  • PV、PVC、StorageClass、CSI 是理解后续章节的四个核心概念,务必掌握其定义和关系。