我有一个NFS安装包含一些我想要呈现给多个项目的只读媒体资产。
使用相同的NFS路径在每个项目中创建新的PV似乎太笨重了。如果其他PVC偶然申请我的资产目录怎么办?
除此之外,我还不知道如何做到这一点。我怎么能做到这一点?
编辑:要明确 - 我想避免群集管理员干预。创建PV时需要群集管理员权限。
PV CONFIG
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: "yes"
creationTimestamp: null
labels:
app: my_app
name: my-assets
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 25Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: my-assets
namespace: my_namespace
resourceVersion: "13480134"
uid: ea36d352-1a22-11e7-a443-0050568b4a96
nfs:
path: /nfs_volume
server: nfs_server
persistentVolumeReclaimPolicy: Recycle
status: {}
来自my_namespace以外的命名空间的PVC无法对此pv提出索赔。这是来自不同命名空间的PVC配置,无法使用ReadWriteMany
对现有PV进行声明。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
name: my-assets
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 25Gi
selector:
matchLabels:
app: my_app
volumeName: my-assets
status: {}
答案 0 :(得分:0)
我不确定您的项目是什么意思,但如果您指的是Deployments
不同的应用程序,它应该使用单个PV定义来处理类型为ReadWriteMany
的NFS。但是,我建议每个部署始终包含一个需要访问NFS的PV和PVC定义。这样就可以从部署中明确表示,您可以单独为每个应用程序更改它。想象一下你想为一个应用改变它而不是另一个应用。
以下示例用于将amazon EFS NFS安装到我的CockroachDB部署中用于编写备份的所有POD。我将它分成2个yamls,但你也可以将它们折叠成一个文件。请注意,您可以对所有POD使用相同的PersistentVolumeClaim。
1 cockroachdbPV.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: cockroachdbpv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany
nfs:
server: {amazon path here}
path: "/"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cockroachdbpv
spec:
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: 10Gi
2 cockroachdb.yaml
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: cockroachdb
spec:
serviceName: "cockroachdb"
replicas: 3
template:
metadata:
labels:
app: cockroachdb
annotations:
{...}
spec:
containers:
- name: cockroachdb
{...}
volumes:
{...}
- name: efsdir
persistentVolumeClaim:
claimName: cockroachdbpv
答案 1 :(得分:0)
您只需要在PV定义和PVC中将ReadWriteMany
列为access mode。
这里有一个例子: https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/nfs