NFS PersistentVolume data lost when deleting K8s deployment

5/28/2019

I create a PersistentVolume using NFS as below, when I delete the deployment I lose my data. If I exec into the postgres container the DB that was created before is not there anymore.

Using AWS EKS, I managed to deleted a deployment without losing any data.

Any help as to why this happens?

PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
spec:
  capacity:
    storage: 100Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /mnt/pv001
    server: 164.10.0.1

PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: metabase-postgres-persistent-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Deployment

...
    spec:
      volumes:
        - name: metabase-postgres-storage
          persistentVolumeClaim:
            claimName: metabase-postgres-persistent-volume-claim
...
-- Anton Swanevelder
kubernetes
nfs

1 Answer

6/20/2019

I had the wrong mountPath, must be /var/lib/postgresql/data

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: edw-pg
spec:
  serviceName: postgres-cluster-ip-service
  replicas: 1
  selector:
    matchLabels:
      component: postgres
  template:
    metadata:
      labels:
        component: postgres
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: postgres
          image: postgres:10.7
          ports:
            - containerPort: 5432  
          volumeMounts:
            - name: edw-persistent-storage-claim
              mountPath: /var/lib/postgresql/data
              readOnly: false
              subPath: postgres
          env:
            - name: PGPASSWORD
              valueFrom:
                secretKeyRef:
                  name: pgpassword
                  key: PGPASSWORD
  volumeClaimTemplates:
  - metadata:
      name: edw-persistent-storage-claim
    spec:
      accessModes: [ "ReadWriteMany" ]
      resources:
        requests:
          storage: 50Gi
-- Anton Swanevelder
Source: StackOverflow