是否可以从命名空间B引用PVC(在命名空间A中)。为什么需要这样做?我希望允许客户(私有云)通过PVC指向其卷,从而允许他们完全控制存储。在Helm安装时,将要求提供PVC信息,并将在Pod规范中使用。
trnvg8h31#
这看起来不可能,只是因为PersistentVolumeClaim是一个命名空间对象。您可以在这里查看详细的答案:https://stackoverflow.com/a/35366775/9065705
PersistentVolumeClaim
oknwwptz2#
如果使用支持读写多个卷(如NFS/EFS),则可以创建指向同一NFS卷的多个永久卷(PV),每个永久卷对应一个要在其中创建PVC的命名空间。它们都可以使用同一路径下的同一NFS卷,或者指定不同的子路径以将它们限制到某些目录。
yzckvree3#
以防有人从谷歌来到这里:现在可以使用Kubernetes 1.26(Alpha版本):https://kubernetes.io/docs/concepts/storage/persistent-volumes/#cross-namespace-data-sources
sg24os4d4#
pvc-shared-namespaces: NS1, NS2
pvc-ref: pvc-1 # the name of the source PVC pvc-ref-namespace: pvc-1-ns # the namespace of the source PVC
CSI从CreateVolumeRequest中取出pvc-ref和pvc-ref命名空间**。CreateVolume接口中的参数**:
1.根据pvc-ref和pvc-ref-namespace找到源PVC,从源PVC中取出pvc-shared-namespaces,判断其中是否有新PVC的命名空间,如果有则执行2,否则拒绝创建;1.判断新的PVC的StorageClass的reclaimPolicy为Retain,如果是则执行3,否则拒绝创建;1.从源PVC中找到源PV,并基于源PV构造CreateVolumeResponse。注意:返回的VolumeId为来源PV的Spec.CSI.VolumeHandle字段,找到来源PV后,可以判断来源PV的persistentVolumeReclaimPolicy是否为Retain,否则拒绝创建。
4条答案
按热度按时间trnvg8h31#
这看起来不可能,只是因为
PersistentVolumeClaim
是一个命名空间对象。您可以在这里查看详细的答案:https://stackoverflow.com/a/35366775/9065705oknwwptz2#
如果使用支持读写多个卷(如NFS/EFS),则可以创建指向同一NFS卷的多个永久卷(PV),每个永久卷对应一个要在其中创建PVC的命名空间。它们都可以使用同一路径下的同一NFS卷,或者指定不同的子路径以将它们限制到某些目录。
yzckvree3#
以防有人从谷歌来到这里:现在可以使用Kubernetes 1.26(Alpha版本):https://kubernetes.io/docs/concepts/storage/persistent-volumes/#cross-namespace-data-sources
sg24os4d4#
我们的解决方案如下:
卷创建如下:
CSI从CreateVolumeRequest中取出pvc-ref和pvc-ref命名空间**。CreateVolume接口中的参数**:
1.根据pvc-ref和pvc-ref-namespace找到源PVC,从源PVC中取出pvc-shared-namespaces,判断其中是否有新PVC的命名空间,如果有则执行2,否则拒绝创建;
1.判断新的PVC的StorageClass的reclaimPolicy为Retain,如果是则执行3,否则拒绝创建;
1.从源PVC中找到源PV,并基于源PV构造CreateVolumeResponse。
注意:返回的VolumeId为来源PV的Spec.CSI.VolumeHandle字段,找到来源PV后,可以判断来源PV的persistentVolumeReclaimPolicy是否为Retain,否则拒绝创建。