Use a Persistent Volume Claim#
In this lab you’ll configure the mysite
pod to use the PersistentVolumeClaim
that you made in the last lab, Make a Persistent Volume Claim. Using a PersistentVolumeClaim
ensures that your valuable user data is kept separately from your pods.
Update the Pod Definition#
There are two fragments that you must add to your pod definition in deployment/postgres-pod.yaml
. The first one goes under the spec
key and ensures that the PersistentVolume
is available to the machine running the pod:
volumes:
- name: db
persistentVolumeClaim:
claimName: db
The second fragment makes the volume available to a particular container. This one is siblings with image
, ports
and resources
definition:
volumeMounts:
- name: db
mountPath: /var/lib/postgresql
Redeploy the Pod#
You can’t simply update the pod with a volume mount. You have to delete and restart it:
$ kubectl delete pod/postgres
$ kubectl apply -f deployment/postgres-pod.yaml
Verify that the volume is present:
$ kubectl describe pod/postgres
...
Mounts:
/var/lib/postgresql/data from db (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-vr2qm (ro)
...
Volumes:
db:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: db
ReadOnly: false
default-token-vr2qm:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-vr2qm
Optional: false