kubernetes 使用readyOnly装载的ROX卷:容器中为false

628mspwn  于 5个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(51)

所以我有一个ROX PVC和PV,我安装在一个吊舱。
在挂载到pod时,我将readOnly设置为false:

Volumes:
  test-volume:
    Type:       PersistentVolumeClaim
    ClaimName:  pvc-1
    ReadOnly:   false

字符串
当我尝试通过执行kubectl exec command来写入这个pod时,它通过了,而我希望它失败,因为PV是用P2P模式ROX创建的。
有人能解释一下这是怎么可能的吗?

v2g6jxz6

v2g6jxz61#

根据kubernetes官方文档:
Kubernetes使用卷访问模式来匹配PersistentVolumeClaims和PersistentVolume。在某些情况下,卷访问模式也会限制PersistentVolume可以挂载的位置。一旦存储被挂载,卷访问模式不会强制执行写保护。即使访问模式被指定为ReadWriteOnce,ReadOnlyMany或ReadWriteMany,它们也不会对卷设置任何约束。例如,即使PersistentVolume被创建为ReadOnlyMany,也不能保证它是只读的。如果访问模式被指定为ReadWriteOncePod,则该卷受到限制,只能挂载在单个Pod上。
在您的情况下,您可能没有在PVC的accessModes中提到ReadOnlyMany,或者使用一些预先存在的卷,因此限制不会应用于卷,并且您能够执行写操作。
根据Google提供的ROX卷文档:
克隆包含数据的现有卷或创建新的动态卷,填充数据并将该卷转换为只读在PV和PVC清单文件中,将访问模式配置为只读多个
通过遵循上述步骤,您将能够实现所需的ROX功能。请参考以下来自Google文档的示例清单:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: PV_NAME
spec:
  storageClassName: "STORAGE_CLASS_NAME"
  capacity:
    storage: DISK_SIZE
  accessModes:
    - ReadOnlyMany
  claimRef:
    namespace: PVC_NAMESPACE
    name: PVC_NAME
  csi:
    driver: pd.csi.storage.gke.io
    volumeHandle: DISK_ID
    fsType: FS_TYPE
    readOnly: true
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: PVC_NAMESPACE
  name: PVC_NAME
spec:
  storageClassName: "STORAGE_CLASS_NAME"
  volumeName: PV_NAME
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: DISK_SIZE

字符串

相关问题