You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes如何将单节点读写的持久卷以只读模式共享给其他节点

特定节点读写、其余节点只读的持久卷挂载方案

要实现单节点读写持久卷、其余所有节点只读挂载该卷,可按照以下步骤配置:

前提确认

首先确认集群使用的存储提供商支持ReadOnlyMany(ROX)访问模式,PVC才能同时声明读写、只读两种访问模式。

配置步骤

1. 编写PVC配置文件pvc.yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # 唯一标识PVC,部署时会用到该名称
  name: public-pv-claim
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce # 单节点读写权限
    - ReadOnlyMany # 多节点只读权限
  resources:
    # 存储申请容量,需要集群中有对应的可用存储
    requests:
      storage: 1Gi

执行kubectl apply -f pvc.yaml创建PVC即可。

2. 特定读写节点的Pod配置

注意:你原有配置中volumeMounts的name字段填写为data,和上方定义的volume名称public不一致,会导致挂载失败,需要修正为对应名称。
修正后的配置如下:

...
      volumes:
      - name: public
        persistentVolumeClaim:
          claimName: public-pv-claim # 对应上面创建的PVC名称
      containers:
      - name: specific
        volumeMounts:
        - name: public # 和volume名称保持一致
          mountPath: "/public" # 挂载到容器内的路径
        ...

该Pod运行在特定节点上,对持久卷拥有读写权限。

3. 其余节点的Pod配置

...
      volumes:
      - name: public
        persistentVolumeClaim:
          claimName: public-pv-claim # 同一个PVC
      containers:
      - name: other
      ...
      volumeMounts:
      - name: public
        mountPath: "/public"
        readOnly: true # 开启只读挂载限制
      ...

通过挂载参数readOnly: true限制所有其他节点的Pod只能读取卷内数据,无法写入。

额外说明

  • 如果存储不支持ReadOnlyMany模式,可以改用共享文件系统类存储(如NFS、CephFS),再配合挂载参数实现只读限制。
  • 若要进一步避免读写权限冲突,可通过节点亲和性规则保证只有指定节点能调度到具备读写权限的Pod。

内容的提问来源于stack exchange,提问作者Ouss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:12:03