在 k8s PersistentVolume 清单文件下定义 claimRef 时命名空间是强制性的吗?
Posted
技术标签:
【中文标题】在 k8s PersistentVolume 清单文件下定义 claimRef 时命名空间是强制性的吗?【英文标题】:is namespace mandatory while defining claimRef under k8s PersistentVolume manifest file? 【发布时间】:2021-09-18 04:54:43 【问题描述】:以下是我的场景。 我有一个 NFS 设置,它将用于创建 PV。然后使用 PVC 绑定卷。 现在,考虑一下我想将特定的 PV/PVC 绑定在一起,而不管 PVC 将在哪里创建。据我尝试,如果不将命名空间带入图片,我就无法绑定 PV/PVC。由于我使用 helm 图表进行部署,并且命名空间可以是任何东西(使用可以创建/使用任何命名空间),因此我不想限制 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 中不提供命名空间选项,但没有成功。
对此的任何帮助将不胜感激。
【问题讨论】:
能否提供kubectl describe pvc <pvcname
的输出
无法在此处评论完整回复
【参考方案1】:
我认为这是不可能的,因为:
PVC 是命名空间资源,而 PV 不是命名空间资源。kubectl api-resources | grep 'pv\|pvc\|NAME'
NAME SHORTNAMES APIVERSION NAMESPACED KIND
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
因此,在多个命名空间中可以有多个具有相同“名称”的 PVC。
因此,当我们在 claimRef 下提及 pvc 的名称时,我们需要提及名称
空间。
【讨论】:
感谢您的澄清。是的!我也有同样的感觉。因此想检查是否有其他方法。如果那不可能,那么我必须将部署限制在特定的命名空间.. :(以上是关于在 k8s PersistentVolume 清单文件下定义 claimRef 时命名空间是强制性的吗?的主要内容,如果未能解决你的问题,请参考以下文章