About Persistent Volume SupportΒΆ

Persistent Volume Claims (PVCs) are requests for storage resources in your cluster. By default, container images have an ephemeral file system. In order for containers to persist files beyond the lifetime of the container, a PVC can be created to obtain a persistent volume which the container can mount and read/write files. In StarlingX, PVCs are backed by Ceph.

Management and customization tasks for Kubernetes PVCs can be accomplished by using StorageClasses set up by two Helm charts; rbd-provisioner and cephfs-provisioner. The rbd-provisioner, and cephfs-provisioner Helm charts are included in the platform-integ-apps system application, which is automatically loaded and applied when Ceph is configured.

If platform-integ-apps is not applied, then enable Ceph. Enabling Ceph would automatically apply the platform-integ-apps application. For information on how to enable Ceph, see Ceph Cluster on a Controller Host.

PVCs are supported with the following options:

  • with accessMode of ReadWriteOnce backed by Ceph RBD

    • only one container can attach to these PVCs

    • management and customization tasks related to these PVCs are done through the rbd-provisioner Helm chart provided by platform-integ-apps

  • with accessMode of ReadWriteMany backed by CephFS

    • multiple containers can attach to these PVCs

    • management and customization tasks related to these PVCs are done through the cephfs-provisioner Helm chart provided by platform-integ-apps

After platform-integ-apps is applied the following system configurations are created:

  • Ceph Pools

    ~(keystone_admin)]$ ceph osd lspools
    kube-rbd
    kube-cephfs-data
    kube-cephfs-metadata
    
  • CephFS

    ~(keystone_admin)]$ ceph fs ls
    name: kube-cephfs, metadata pool: kube-cephfs-metadata, data pools: [kube-cephfs-data ]
    
  • Kubernetes StorageClasses

    ~(keystone_admin)]$ kubectl get sc
    NAME               PROVISIONER     RECLAIMPOLICY VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION
    cephfs             ceph.com/cephfs Delete        Immediate           false
    general (default)  ceph.com/rbd    Delete        Immediate           false