在 Kubernetes 中,我怎样才能有一种访问模式来允许一次写入一个 pod 而许多 pods 只读?

In Kubernetes, how can i have an access mode to allow one pod at a time to write and many pods to read only?

我试图定义一个 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: master-pvc
spec:
  accessModes:
    - ReadWriteOnce
    - ReadOnlyMany
  resources:
    requests:
      storage: 1Gi

需要只读访问的节点应该定义:

volumeMounts:
- name: mastervol
  mountPath: /data/master/
  readOnly: true

需要读写的master,应该定义:

volumeMounts:
- name: mastervol
  mountPath: /data/master/

这是实现我想要的目标的有效方法吗?

请求volumeMount的不是一个节点,而是一个Pod里面的容器(很多Pods可能运行在同一个节点)

一次 PVC 使用单一访问模式(即使它支持多种访问模式)1-1 绑定到 PV(另请参阅 access modes)。因此,您 不能 ReadWriteOnce(对于某些 Pods)和 ReadOnlyMany(对于其他 Pods).

如果要支持 1 个写入器和多个读取器,一种解决方案是让他们使用 ReadWriteOnce 卷并确保同一节点上的所有 Pods 运行 卷已安装(例如,通过使用 node affinity 约束)。