如何限制对 pv 的访问

Lan*_*Lan 0 openshift openshift-origin

在 openshift 中,PV 可用于所有项目,如果您能看到它,您就可以声明它。

有没有办法限制 PV 仅适用于某些应用程序/项目?对于其他人,他们被禁止使用它。

似乎 StorageClass 不符合此要求。

此致

小智 5

您可以预先绑定音量并声明 [1]:

您可能还希望您的集群管理员仅为您的声明“保留”卷,以便其他人的声明可以在您的声明之前绑定到它。在这种情况下,管理员可以使用 claimRef 字段在 PV 中指定 PVC。PV 只能绑定到具有在 claimRef 中指定的相同名称和命名空间的 PVC。尽管忽略了标签选择器,但仍必须满足 PVC 的访问模式和资源请求才能绑定 PV 和 PVC。

如果您确切地知道希望 PersistentVolumeClaim 绑定到哪个 PersistentVolume,则可以使用 volumeName 字段在 PVC 中指定 PV。此方法跳过正常的匹配和绑定过程。PVC 将只能绑定到与 volumeName 中指定的名称相同的 PV。如果这个名字的PV存在并且是Available的,无论PV是否满足PVC的标签选择器、访问模式和资源请求,PV和PVC都将被绑定。

持久卷示例:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  nfs:
    path: /tmp
    server: 172.17.0.2
  persistentVolumeReclaimPolicy: Recycle
  claimRef:
    name: claim1
    namespace: default
Run Code Online (Sandbox Code Playgroud)

PersistentVolumeClaim 示例:

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "claim1"
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "1Gi"
  volumeName: "pv0001"
Run Code Online (Sandbox Code Playgroud)

[1] https://docs.openshift.org/latest/dev_guide/persistent_volumes.html#persistent-volumes-volumes-and-claim-prebinding