在 k8s PersistentVolume 清单文件下定义 claimRef 时命名空间是强制性的吗?
is namespace mandatory while defining claimRef under k8s PersistentVolume manifest file?
以下是我的场景。
我有一个 NFS 设置,它将用于创建 PV。然后使用 PVC 绑定卷。
现在,考虑一下我想将特定的 PV/PVC 绑定在一起,而不管 PVC 将在何处创建。据我所知,如果不将名称空间引入图片,我无法绑定 PV/PVC 。由于我使用 helm 图表进行部署并且命名空间可以是任何东西(可以使用 create/use 任何命名空间)因此我不想限制 PV 仅在一个命名空间中查找 PVC,而是绑定到来自任何命名空间的匹配 PVC。
nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
claimRef:
name: nfs-pvc
namespace: default # This is something I wanna get rid off
nfs:
path: /apps/exports
server: <nfs-server-ip>
nfs-pvc.yaml #这个我应该可以在任何命名空间中创建并附加到上面的 PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
namespace: fhir
spec:
volumeName: nfs-pv
storageClassName: nfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
我试过不给PV中的命名空间选项,但是没有用。
如有任何帮助,我们将不胜感激。
我认为这是不可能的,因为:
- PVC 是名称spaced 资源,PV 不是名称spaced 资源。
kubectl api-resources | grep 'pv\|pvc\|NAME'
NAME SHORTNAMES APIVERSION NAMESPACED KIND
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
- 因此可以有多个具有相同 'name' 的 PVC 跨越多个名称space。
所以当我们在 claimRef 下提及 pvc 的名称时,我们需要提及名称
space 还有。
以下是我的场景。 我有一个 NFS 设置,它将用于创建 PV。然后使用 PVC 绑定卷。 现在,考虑一下我想将特定的 PV/PVC 绑定在一起,而不管 PVC 将在何处创建。据我所知,如果不将名称空间引入图片,我无法绑定 PV/PVC 。由于我使用 helm 图表进行部署并且命名空间可以是任何东西(可以使用 create/use 任何命名空间)因此我不想限制 PV 仅在一个命名空间中查找 PVC,而是绑定到来自任何命名空间的匹配 PVC。
nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
claimRef:
name: nfs-pvc
namespace: default # This is something I wanna get rid off
nfs:
path: /apps/exports
server: <nfs-server-ip>
nfs-pvc.yaml #这个我应该可以在任何命名空间中创建并附加到上面的 PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
namespace: fhir
spec:
volumeName: nfs-pv
storageClassName: nfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
我试过不给PV中的命名空间选项,但是没有用。
如有任何帮助,我们将不胜感激。
我认为这是不可能的,因为:
- PVC 是名称spaced 资源,PV 不是名称spaced 资源。
kubectl api-resources | grep 'pv\|pvc\|NAME'
NAME SHORTNAMES APIVERSION NAMESPACED KIND
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
- 因此可以有多个具有相同 'name' 的 PVC 跨越多个名称space。 所以当我们在 claimRef 下提及 pvc 的名称时,我们需要提及名称 space 还有。