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

628mspwn  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(176)

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

  1. Volumes:
  2. test-volume:
  3. Type: PersistentVolumeClaim
  4. ClaimName: pvc-1
  5. 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文档的示例清单:

  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4. name: PV_NAME
  5. spec:
  6. storageClassName: "STORAGE_CLASS_NAME"
  7. capacity:
  8. storage: DISK_SIZE
  9. accessModes:
  10. - ReadOnlyMany
  11. claimRef:
  12. namespace: PVC_NAMESPACE
  13. name: PVC_NAME
  14. csi:
  15. driver: pd.csi.storage.gke.io
  16. volumeHandle: DISK_ID
  17. fsType: FS_TYPE
  18. readOnly: true
  19. ---
  20. apiVersion: v1
  21. kind: PersistentVolumeClaim
  22. metadata:
  23. namespace: PVC_NAMESPACE
  24. name: PVC_NAME
  25. spec:
  26. storageClassName: "STORAGE_CLASS_NAME"
  27. volumeName: PV_NAME
  28. accessModes:
  29. - ReadOnlyMany
  30. resources:
  31. requests:
  32. storage: DISK_SIZE

字符串

展开查看全部

相关问题