Block storage allows a single pod to mount storage. This page shows how to create a simple web application on Kubernetes using persistent volumes enabled by Rook.
This sample requires at least 1 OSD per node, with each OSD located on 3 different nodes. |
Before Rook can provision storage, a CephBlockPool and StorageClass need to be created. This will allow Kubernetes to interoperate with Rook when provisioning PVs. So let's create these two components
# The file, located in "rook/deploy/examples/csi/rbd", already contains both components $ kubectl create -f storageclass.yaml |
Inside the same folder there are other files, including pod.yaml and pvc.yaml, useful for carrying out some quick tests. Of course both components present in the storageclass.yaml file can be modified according to your needs. As for the first, you will find more details here. Instead for the second, try to test the behavior of the parameters seen in the Storage chapter, that is
allowVolumeExpansion: # false (default) or true volumeBindingMode: # Immediate (default) or WaitForFirstConsumer reclaimPolicy: # Delete (default) or Retain - Recycle not supported |
Since block storage allows a single pod to mount storage, only an accessMode of type RWO (ReadWriteOnce) is allowed, when instantiating a PVC.
To clean up all the artifacts created
$ kubectl delete -f pod.yaml # Or whatever the application used $ kubectl delete -n rook-ceph cephblockpools.ceph.rook.io replicapool $ kubectl delete storageclass rook-ceph-block |