本文个人博客地址:
https://www.huweihuang.com/kubernetes-notes/storage/storage-class.html
StorageClass
1. StorageClass概述
StorageClass
提供了一种描述
存储类
(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。
StorageClass
对象中包含
provisioner
、
parameters
和
reclaimPolicy
字段,当需要动态分配
PersistentVolume
时会使用到。当创建
StorageClass
对象时,设置名称和其他参数,一旦创建了对象就不能再对其更新。也可以为没有申请绑定到特定 class 的 PVC 指定一个默认的
StorageClass
。
StorageClass对象文件
kind: StorageClass
apiVersion: storage.k8s.io/v3
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
mountOptions:
- debug
2. StorageClass的属性
2.1. Provisioner(存储分配器)
Storage class 有一个
分配器(provisioner)
,用来决定使用哪个卷插件分配 PV,该字段必须指定。可以指定内部分配器,也可以指定外部分配器。外部分配器的代码地址为:
kubernetes-incubator/external-storage
,其中包括
NFS
和
Ceph
等。
2.2. Reclaim Policy(回收策略)
可以通过
reclaimPolicy
字段指定创建的
Persistent Volume
的回收策略,回收策略包括:
Delete
或者
Retain
,没有指定默认为
Delete
。
2.3. Mount Options(挂载选项)
由 storage class 动态创建的 Persistent Volume 将使用 class 中
mountOptions
字段指定的挂载选项。
2.4. 参数
Storage class 具有描述属于 storage class 卷的参数。取决于
分配器
,可以接受不同的参数。 当参数被省略时,会使用默认值。
例如以下使用
Ceph RBD
kind: StorageClass
apiVersion: storage.k8s.io/v3
metadata:
name: fast
provisioner: kubernetes.io/rbd
parameters:
monitors: 30.36.353.305:6789
adminId: kube
adminSecretName: ceph-secret
adminSecretNamespace: kube-system
pool: kube
userId: kube
userSecretName: ceph-secret-user
fsType: ext4
imageFormat: "2"
imageFeatures: "layering"
对应的参数说明
-
monitors
:Ceph monitor,逗号分隔。该参数是必需的。 -
adminId
:Ceph 客户端 ID,用于在池(ceph pool)中创建映像。 默认是 “admin”。 -
adminSecretNamespace
:adminSecret 的 namespace。默认是 “default”。 -
adminSecret
:adminId 的 Secret 名称。该参数是必需的。 提供的 secret 必须有值为 “
kubernetes.io/rbd”
的 type 参数。 -
pool
: Ceph RBD 池. 默认是 “rbd”。 -
userId
:Ceph 客户端 ID,用于映射 RBD 镜像(RBD image)。默认与 adminId 相同。 -
userSecretName
:用于映射 RBD 镜像的 userId 的 Ceph Secret 的名字。 它必须与 PVC 存在于相同的 namespace 中。该参数是必需的。 提供的 secret 必须具有值为 “
kubernetes.io/rbd”
的 type 参数,例如以这样的方式创建:kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \ --from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' \ --namespace=kube-system
-
fsType
:Kubernetes 支持的 fsType。默认:“ext4”。 -
imageFormat
:Ceph RBD 镜像格式,”1” 或者 “2”。默认值是 “1”。 -
imageFeatures
:这个参数是可选的,只能在你将 imageFormat 设置为 “2” 才使用。 目前支持的功能只是
layering
。 默认是 ““,没有功能打开。
参考文章: