docs/doc/source/storage/kubernetes/mount-readwritemany-persistent-volumes-in-containers.rst
Juanita-Balaraj 63cd4f5fdc CephFS RWX Support in Host-based Ceph
Incorporated patchset 1 review comments
Updated patchset 5 review comments
Updated patchset 6 review comments
Fixed merge conflicts
Updated patchset 8 review comments

Change-Id: Icd7b08ab69273f6073b960a13cf59905532f851a
Signed-off-by: Juanita-Balaraj <juanita.balaraj@windriver.com>
2021-05-03 16:39:45 -04:00

5.4 KiB

Mount ReadWriteMany Persistent Volumes in Containers

You can attach a ReadWriteMany PVC to multiple containers, and that can be written to, by all containers.

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 . It is the responsibility of an individual micro-service within an application to make a volume claim, mount it, and use it.

You must have created the . This procedure uses with names and configurations created in : Create ReadWriteMany Persistent Volume Claims <create-readwritemany-persistent-volume-claims> .

  1. Create the busybox container with the persistent volumes created from the PVCs mounted. This deployment will create two replicas mounting the same persistent volume.

    1. Create a yaml file definition for the busybox container.

      % 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
    2. Apply the busybox configuration.

      % kubectl apply -f wrx-busybox.yaml
      deployment.apps/wrx-busybox created
  2. Attach to the busybox and create files on the Persistent Volumes.

    1. List the available pods.

      % kubectl get pods
      NAME                           READY   STATUS    RESTARTS   AGE
      wrx-busybox-6455997c76-4kg8v   1/1     Running   0          108s
      wrx-busybox-6455997c76-crmw6   1/1     Running   0          108s
    2. Connect to the pod shell for CLI access.

      % kubectl attach wrx-busybox-6455997c76-4kg8v -c busybox -i -t
    3. From the container's console, list the disks to verify that the Persistent Volume is attached.

      % df
      Filesystem           1K-blocks      Used Available Use% Mounted on
      overlay               31441920   1783748  29658172   6% /
      tmpfs                    65536         0     65536   0% /dev
      tmpfs                  5033188         0   5033188   0% /sys/fs/cgroup
      ceph-fuse            516542464    643072 515899392   0% /mnt1

      The PVC is mounted as /mnt1.

  3. Create files in the mount.

    # cd /mnt1
    # touch i-was-here-${HOSTNAME}
    # ls /mnt1
    i-was-here-wrx-busybox-6455997c76-4kg8vi
  4. End the container session.

    % exit
    wrx-busybox-6455997c76-4kg8v -c busybox -i -t' command when the pod is running
  5. Connect to the other busybox container

    % kubectl attach wrx-busybox-6455997c76-crmw6 -c busybox -i -t
  6. Optional: From the container's console list the disks to verify that the PVC is attached.

    % df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    overlay               31441920   1783888  29658032   6% /
    tmpfs                    65536         0     65536   0% /dev
    tmpfs                  5033188         0   5033188   0% /sys/fs/cgroup
    ceph-fuse            516542464    643072 515899392   0% /mnt1
  7. Verify that the file created from the other container exists and that this container can also write to the Persistent Volume.

    # cd /mnt1
    # ls /mnt1
    i-was-here-wrx-busybox-6455997c76-4kg8v
    # echo ${HOSTNAME}
    wrx-busybox-6455997c76-crmw6
    # touch i-was-here-${HOSTNAME}
    # ls /mnt1
    i-was-here-wrx-busybox-6455997c76-4kg8v i-was-here-wrx-busybox-6455997c76-crmw6
  8. End the container session.

    % exit
    Session ended, resume using 'kubectl attach wrx-busybox-6455997c76-crmw6 -c busybox -i -t' command when the pod is running
  9. Terminate the busybox container.

    % kubectl delete -f wrx-busybox.yaml

    For more information on Persistent Volume Support, see, About Persistent Volume Support <about-persistent-volume-support>.