在 Kubernetes 中,PersistentVolume(PV)是一种集群级别的资源,用于表示可供 Pod 使用的持久存储。而 StorageClass(SC)则是一种动态分配 PV 的方式。当 PVC 需要使用存储时,可以通过绑定到一个 SC 来自动创建相应的 PV。
以下是将 PV 与 SC 绑定的步骤:
- 创建 StorageClass
首先需要创建一个 StorageClass 对象。在创建时,需要指定该类别的名称、provisioner、参数等信息。例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/aws-ebs
parameters:
type: io1
iopsPerGB: "10"
- 创建 PersistentVolume
接下来需要手动或者通过自动化工具创建一个 PV,并将其与该 StorageClass 进行关联。在创建 PV 的 YAML 文件中,需要指定该卷所需容量大小和其他相关属性,并且在 spec.storageClassName 字段中引用上述定义的 StorageClass 名称。例如:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-slow-01
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
storageClassName: slow # 引用上述定义的 StorageClass 名称
awsElasticBlockStore:
volumeID: vol-0123456789abcdefg # 指定 EBS 卷 ID
fsType: ext4
请注意,此处指定的 storageClassName 必须与上述创建的 StorageClass 名称完全匹配。只有在匹配成功时,PVC 才会自动绑定到该 PV 上。
- 创建 PersistentVolumeClaim
最后,可以创建一个 PVC 并将其与上述定义的 PV 进行绑定。在 PVC 的 YAML 文件中,需要指定所需容量大小和访问模式等参数,并且在 spec.storageClassName 字段中引用上述定义的 StorageClass 名称。例如:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: slow # 引用上述定义的 StorageClass 名称
当 PVC 被创建时,Kubernetes 将搜索并尝试使用可用的 PV 来满足其需求。如果存在与该 PVC 匹配的 PV,则自动将其绑定在一起。
通过以上步骤,就可以将一个 PV 和 SC 相关联,并使得相应的 PVC 自动绑定到 PV 上。




