Я пытаюсь понять, как я могу использовать один общий ресурс nfs с утверждениями постоянного тома k8s.
Например, предположим, что у меня настроен один nfs pv:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-storage
nfs:
path: /var/nfs_exports
server: 10.9.0.205
readOnly: false
Можно ли создать несколько утверждений тома, которые отображаются в подкаталоги в пределах одного общего ресурса?
Например, снова предположим, что я создаю следующие претензии по объему:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: influx-data
namespace: kube-system
spec:
storageClassName: nfs-storage
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
---
и:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: elasticsearch-data
namespace: kube-system
spec:
storageClassName: nfs-storage
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
Я предполагаю, что оба утверждения будут привязаны к pv, но нет возможности разделить данные как elasticsearch, так и Influxdb.
Надеюсь, вы понимаете, что я здесь пытаюсь сделать (извините, мне сложно объяснить). Я просто хочу использовать один общий ресурс nfs, который может использоваться несколькими модулями, сохраняя при этом их данные отдельно.
Я читал, что PV привязан один к одному к PVC и, следовательно, не может быть использован повторно, но PVC можно использовать повторно. См. Следующие ресурсы:
https://docs.openshift.org/latest/install_config/storage_examples/shared_storage.html
В этом случае (совместное использование одного PV с использованием двух PVC в двух разных папках) вы можете использовать параметр subPath в конфигурации volumeMounts ваших контейнеров:
[...]
'spec': {
'template': {
'metadata': {'name': 'container_name'},
'spec': {
'restartPolicy': 'Never',
'containers':[{
'image': 'busybox',
'name': 'example',
'command': ['/bin/ash'],
'args': ['-c', ls -l /data],
'volumeMounts': [{
'name': 'influx-vol-mount',
'mountPath': '/data',
'subPath': 'subpath_1',
'readOnly': False
},
{ 'name': 'es-vol-mount',
'mountPath': '/data',
'subPath': 'subpath_2',
'readOnly': False
}]
}],
'volumes': [
{
'name': 'influx-vol-mount',
'persistentVolumeClaim': {'claimName': 'influx-data'}
},
{
'name': 'store-vol',
'persistentVolumeClaim': {'claimName': 'elasticsearch-data'}
}
]
}
[...]