StorageClass¶
StorageClass is an API object in Kubernetes that defines a template for creating PersistentVolumes (PVs) dynamically^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
It functions as the core component of the Dynamic Provisioning mechanism, allowing Kubernetes to automatically create storage volumes based on user demand, rather than relying on administrators to manually provision them^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
Purpose¶
In a Kubernetes cluster, developers create PersistentVolumeClaims (PVCs) to specify their storage requirements^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]. Without Dynamic Provisioning, administrators would have to manually create thousands of PVs to match these claims^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
StorageClass solves this by acting as an intermediary. When a PVC is created, Kubernetes locates the appropriate StorageClass and uses it to automatically generate a matching PV^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
Structure¶
A StorageClass definition contains two main parts^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]:
- PV Properties: Describes the attributes of the volume, such as the storage type and volume size^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
- Storage Plugin: Specifies the provisioner (e.g., Ceph, NFS) responsible for creating the volume^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
Example Definition¶
The following is an example of a StorageClass using the Rook-Ceph provisioner^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: block-service
provisioner: ceph.rook.io/block
parameters:
pool: replicapool
clusterNamespace: rook-ceph
In this example:
* provisioner: Identifies the storage plugin^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
* parameters: Configuration specific to the provisioner^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
Workflow¶
To utilize Dynamic Provisioning, the workflow is as follows^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]:
- Admin Setup: An administrator creates the StorageClass in the cluster (e.g., using
kubectl create -f sc.yaml)^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]. - User Request: A developer creates a PVC that includes the
storageClassNamefield pointing to the specific StorageClass^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md]. - Binding: Kubernetes automatically calls the provisioner defined in the StorageClass to create a new PV and binds it to the PVC^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
Related Concepts¶
- [[PersistentVolume]]
- [[PersistentVolumeClaim]]
- Dynamic Provisioning
Sources¶
- 400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md