基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

PV 的访问模式 (Access Modes) 有哪些(RWO, ROX, RWX)?

知识点图片

在 Kubernetes 中,PersistentVolume (PV) 的 访问模式 (Access Modes) 定义了存储卷可以被节点 (Node) 以何种方式挂载。

主要有以下三种标准模式,以及一种较新的模式:

1. RWO - ReadWriteOnce (读写,单节点)

  • 全称:ReadWriteOnce
  • 含义:该卷可以被单个节点以读写模式挂载。
  • 关键点
    • “Once” 指的是节点 (Node),而不是 Pod。这意味着如果同一个节点上有多个 Pod,它们可以同时访问这个卷。
    • 一旦该卷被挂载到一个节点上,其他节点就无法挂载它。
  • 常见场景:数据库存储、单实例应用。
  • 典型后端:块存储(如 AWS EBS, Azure Disk, GCE PD, VMware vSphere)。

2. ROX - ReadOnlyMany (只读,多节点)

  • 全称:ReadOnlyMany
  • 含义:该卷可以被多个节点同时以只读模式挂载。
  • 关键点
    • 所有挂载该卷的 Pod 只能读取数据,不能写入。
    • 适用于跨节点共享静态数据。
  • 常见场景:加载静态配置、AI 模型数据分发、Web 静态资源。
  • 典型后端:NFS, GlusterFS, CephFS, ConfigMap/Secret (逻辑上)。

3. RWX - ReadWriteMany (读写,多节点)

  • 全称:ReadWriteMany
  • 含义:该卷可以被多个节点同时以读写模式挂载。
  • 关键点
    • 这是实现“共享存储”的关键模式。
    • 允许多个 Pod 在不同节点上同时读写同一个文件系统。
  • 常见场景:共享日志目录、Web 服务器共享上传目录、分布式应用。
  • 典型后端:文件存储(如 NFS, AWS EFS, Azure Files, CephFS, GlusterFS)。
  • 注意:块存储(如 AWS EBS)通常不支持此模式。

4. RWOP - ReadWriteOncePod (读写,单 Pod) [Kubernetes 1.22+ 新增]

  • 全称:ReadWriteOncePod
  • 含义:该卷只能被单个 Pod 挂载。
  • 为什么需要它?
    • RWO 限制的是节点。如果一个节点上运行了两个 Pod,它们都可以访问 RWO 卷,这可能会导致数据竞争(Race Condition)。
    • RWOP 提供了更严格的限制,确保整个集群中只有一个 Pod 能读写该卷。
  • 典型后端:CSI 驱动支持的块存储。

总结对比表

缩写 全称 读写权限 节点并发数 Pod 并发数 典型存储后端
RWO ReadWriteOnce 读写 1 个 同一节点上可多个 AWS EBS, Azure Disk
ROX ReadOnlyMany 只读 多个 多个 NFS, GlusterFS
RWX ReadWriteMany 读写 多个 多个 NFS, AWS EFS, CephFS
RWOP ReadWriteOncePod 读写 1 个 仅 1 个 (部分 CSI 驱动)

重要注意事项

  1. 底层存储决定支持模式:你不能强行要求一个不支持 RWX 的存储(如 AWS EBS)变成 RWX。如果底层存储不支持,PVC 绑定会失败或报错。
  2. 一次只能使用一种模式:虽然一个 PV 可能在能力上支持多种模式(例如 NFS 支持 RWO, ROX, RWX),但在 PVC 绑定时,通常只能指定一种特定的模式进行挂载。
00:00
00:00