Skip to content

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]:

  1. 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].
  2. 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]:

  1. 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].
  2. User Request: A developer creates a PVC that includes the storageClassName field pointing to the specific StorageClass^[400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md].
  3. 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].

Sources

  • 400-devops__06-Kubernetes__k8s-paas__原理及源码解析__Kubernetes_yaml文件.md