kubernetes e compartilhando um volume nfs em vários pods

2

Estou tentando descobrir como posso usar um único compartilhamento nfs com declarações de volume persistentes do k8s.

Por exemplo, digamos que eu tenha um único nfs pv configurado:

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

É possível criar várias declarações de volume que mapeiam para subdiretórios nesse compartilhamento único?

Por exemplo, novamente, digamos que eu crie as seguintes declarações de volume:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: influx-data
  namespace: kube-system
spec:
  storageClassName: nfs-storage
  accessModes:
  - ReadWriteMany
  resources:
     requests:
       storage: 5Gi
---

e:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elasticsearch-data
  namespace: kube-system
spec:
  storageClassName: nfs-storage
  accessModes:
  - ReadWriteMany
  resources:
     requests:
       storage: 2Gi
---

Eu acho que ambas as declarações estarão ligadas ao pv, mas não há como separar os dados de elasticsearch e influxdb.

Espero que você entenda o que estou tentando fazer aqui (desculpe, acho difícil explicar). Eu só quero usar um único compartilhamento nfs que pode ser usado por vários pods, mantendo os dados separados.

    
por Jeroen Jacobs 02.06.2017 / 15:23

2 respostas

0

Neste caso (compartilhando um PV usando dois PVCs em duas pastas diferentes), você pode usar a opção subPath na configuração do volumeMontes de seus contêineres:

[...]
'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'}
    }
  ]
}
[...]
    
por 21.12.2017 / 17:58
0

Eu li que um PV é ligado um a um a um PVC e, portanto, não pode ser reutilizado, mas o PVC pode ser reutilizado. Veja os seguintes recursos:

link

link

    
por 26.04.2018 / 12:01