Tutorial on Kubernetes StorageClass
March 11, 2019 ยท View on GitHub
For production scenarios, we often need to dynamically provision persistent volumes and persistent volume claims, so we need to use Kubernetes StorageClass.
For example, we use StorageClass like below:
[root@k8s-master ~]# kubectl get storageclass
NAME PROVISIONER AGE
demo-nfs-storage harmonycoud.cn/nfs 56d
mongo-demo-nfs-storage harmonycoud.cn/nfs 67d
[root@k8s-master ~]# kubectl get storageclass demo-nfs-storage -o yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
creationTimestamp: 2019-01-14T12:35:02Z
name: demo-nfs-storage
resourceVersion: "30268939"
selfLink: /apis/storage.k8s.io/v1/storageclasses/demo-nfs-storage
uid: d0125b5b-17f8-11e9-8963-005056bc2383
provisioner: harmonycoud.cn/nfs
reclaimPolicy: Delete
So with Kubernetes StorageClass our RocketMQ Operator only needs to know the storageClassName, and all the RocketMQ broker clusters PV and PVC would be provisioned automatically, like following:
[root@k8s-master ~]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-920d2bba-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerlogs-mybrokercluster-0-0 demo-nfs-storage 3h
pvc-920ead52-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerstore-mybrokercluster-0-0 demo-nfs-storage 3h
pvc-9225c2cf-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerlogs-mybrokercluster-1-0 demo-nfs-storage 3h
pvc-922c1b7f-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerstore-mybrokercluster-1-0 demo-nfs-storage 3h
pvc-9631143d-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerstore-mybrokercluster-1-1 demo-nfs-storage 3h
pvc-96331246-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerlogs-mybrokercluster-1-1 demo-nfs-storage 3h
pvc-96fa5022-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerlogs-mybrokercluster-0-1 demo-nfs-storage 3h
pvc-96fd203d-43da-11e9-9df9-005056bc2383 5Gi RWO Delete Bound rocketmq-operator/brokerstore-mybrokercluster-0-1 demo-nfs-storage 3h
[root@k8s-master ~]# kubectl get pvc -n rocketmq-operator
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
brokerlogs-mybrokercluster-0-0 Bound pvc-920d2bba-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerlogs-mybrokercluster-0-1 Bound pvc-96fa5022-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerlogs-mybrokercluster-1-0 Bound pvc-9225c2cf-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerlogs-mybrokercluster-1-1 Bound pvc-96331246-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerstore-mybrokercluster-0-0 Bound pvc-920ead52-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerstore-mybrokercluster-0-1 Bound pvc-96fd203d-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerstore-mybrokercluster-1-0 Bound pvc-922c1b7f-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h
brokerstore-mybrokercluster-1-1 Bound pvc-9631143d-43da-11e9-9df9-005056bc2383 5Gi RWO demo-nfs-storage 3h