docs/doc/source/storage/kubernetes/mount-readwritemany-persistent-volumes-in-containers.rst
Elisamara Aoki Goncalves 711e6c2341 Migration to ceph-csi for RBD/CephFS provisioners
Story: 2009987
Task: 47040

Signed-off-by: Elisamara Aoki Goncalves <elisamaraaoki.goncalves@windriver.com>
Change-Id: Ie0172fc2e0b42f0534faae0ec1df4e503e3e4485
2022-12-16 15:18:56 -03:00

170 lines
5.7 KiB
ReStructuredText

.. fkk1616520068837
.. _mount-readwritemany-persistent-volumes-in-containers:
====================================================
Mount ReadWriteMany Persistent Volumes in Containers
====================================================
You can attach a ReadWriteMany PVC to multiple containers, and that |PVC| can
be written to, by all containers.
.. rubric:: |context|
This example shows how a volume is claimed and mounted by each container
replica of a deployment with 2 replicas, and each container replica can read
and write to the |PVC|. It is the responsibility of an individual micro-service
within an application to make a volume claim, mount it, and use it.
.. rubric:: |prereq|
You must have created the |PVCs|. This procedure uses |PVCs| with names and
configurations created in |prod| |stor-doc|: :ref:`Create ReadWriteMany Persistent Volume Claims <create-readwritemany-persistent-volume-claims>` .
.. rubric:: |proc|
.. _fkk1616520068837-steps-fqj-flr-tkb:
#. Create the busybox container with the persistent volumes created from the PVCs mounted. This deployment will create two replicas mounting the same persistent volume.
#. Create a yaml file definition for the busybox container.
.. code-block:: none
~(keystone_admin)]$ cat <<EOF > wrx-busybox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrx-busybox
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 2
selector:
matchLabels:
run: busybox
template:
metadata:
labels:
run: busybox
spec:
containers:
- args:
- sh
image: busybox
imagePullPolicy: Always
name: busybox
stdin: true
tty: true
volumeMounts:
- name: pvc1
mountPath: "/mnt1"
restartPolicy: Always
volumes:
- name: pvc1
persistentVolumeClaim:
claimName: rwx-test-claim
EOF
#. Apply the busybox configuration.
.. code-block:: none
~(keystone_admin)]$ kubectl apply -f wrx-busybox.yaml
deployment.apps/wrx-busybox created
#. Attach to the busybox and create files on the Persistent Volumes.
#. List the available pods.
.. code-block:: none
~(keystone_admin)]$ kubectl get pods
NAME READY STATUS RESTARTS AGE
wrx-busybox-767564b9cf-g8ln8 1/1 Running 0 49s
wrx-busybox-767564b9cf-jrk5z 1/1 Running 0 49s
#. Connect to the pod shell for CLI access.
.. code-block:: none
kubectl attach wrx-busybox-767564b9cf-g8ln8 -c busybox -i -t
#. From the container's console, list the disks to verify that the Persistent Volume is attached.
.. code-block:: none
% df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 31441920 9695488 21746432 31% /
tmpfs 65536 0 65536 0% /dev
tmpfs 12295352 0 12295352 0% /sys/fs/cgroup
192.168.204.2:6789:/volumes/csi/pvc-volumes-565a1160-7b6c-11ed-84b8-0e99d59ed96d/cf39026c-06fc-413a-bce9-b13fb66254a3
1048576 0 1048576 0% /mnt1
The PVC is mounted as /mnt1.
#. Create files in the mount.
.. code-block:: none
# cd /mnt1
# touch i-was-here-${HOSTNAME}
# ls /mnt1
i-was-here-wrx-busybox-767564b9cf-g8ln8
#. End the container session.
.. code-block:: none
% exit
Session ended, resume using 'kubectl attach wrx-busybox-767564b9cf-g8ln8 -c busybox -i -t' command when the pod is running
#. Connect to the other busybox container
.. code-block:: none
~(keystone_admin)]$ kubectl attach wrx-busybox-767564b9cf-jrk5z -i -t
#. Optional: From the container's console list the disks to verify that the PVC is attached.
.. code-block:: none
% df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 31441920 9695512 21746408 31% /
tmpfs 65536 0 65536 0% /dev
tmpfs 12295352 0 12295352 0% /sys/fs/cgroup
192.168.204.2:6789:/volumes/csi/pvc-volumes-565a1160-7b6c-11ed-84b8-0e99d59ed96d/cf39026c-06fc-413a-bce9-b13fb66254a3
1048576 0 1048576 0% /mnt1
#. Verify that the file created from the other container exists and that this container can also write to the Persistent Volume.
.. code-block:: none
# cd /mnt1
# ls
i-was-here-wrx-busybox-767564b9cf-g8ln8
# echo ${HOSTNAME}
wrx-busybox-767564b9cf-jrk5z
# touch i-was-here-${HOSTNAME}
# ls
i-was-here-wrx-busybox-767564b9cf-g8ln8 i-was-here-wrx-busybox-767564b9cf-jrk5z
#. End the container session.
.. code-block:: none
% exit
Session ended, resume using 'kubectl attach wrx-busybox-767564b9cf-jrk5z -c busybox -i -t' command when the pod is running
#. Terminate the busybox container.
.. code-block:: none
~(keystone_admin)]$ kubectl delete -f wrx-busybox.yaml
For more information on Persistent Volume Support, see, :ref:`About Persistent Volume Support <about-persistent-volume-support>`.