Kubernetes必备知识: StorageClass

所属技术领域:

K8s

|名词定义|

StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。
StorageClass 对象中包含 provisioner、parameters 和 reclaimPolicy 字段,当需要动态分配 PersistentVolume 时会使用到。当创建 StorageClass 对象时,设置名称和其他参数,一旦创建了对象就不能再对其更新。也可以为没有申请绑定到特定 class 的 PVC 指定一个默认的 StorageClass 。

|技术特点|

StorageClass对象文件
Kubernetes必备知识: StorageClass

这个模板文件叫 StorageClass,在 StorageClass 里面,我们需要填的重要信息:第一个是 provisioner,provisioner 是什么?它其实就是说我当时创建 PV 和对应的存储的时候,应该用哪个存储插件来去创建。

这些参数是通过 K8s 创建存储的时候,需要指定的一些细节参数。对于这些参数,用户是不需要关心的,像这里 regionld、zoneld、fsType 和它的类型。ReclaimPolicy ,就是说动态创建出来的这块 PV,当使用方使用结束、Pod 及 PVC 被删除后,这块 PV 应该怎么处理,我们这个地方写的是 delete,意思就是说当使用方 pod 和 PVC 被删除之后,这个 PV 也会被删除掉。
 StorageClass的属性

  1. Provisioner(存储分配器)
    Storage class 有一个分配器(provisioner),用来决定使用哪个卷插件分配 PV,该字段必须指定。可以指定内部分配器,也可以指定外部分配器。外部分配器的代码地址为:kubernetes-incubator/external-storage,其中包括NFS和Ceph等。
  2. Reclaim Policy(回收策略)
    可以通过reclaimPolicy字段指定创建的Persistent Volume的回收策略,回收策略包括:Delete 或者 Retain,没有指定默认为Delete。
  3. Mount Options(挂载选项)
    由 storage class 动态创建的 Persistent Volume 将使用 class 中 mountOptions 字段指定的挂载选项。
  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。默认是 ““,没有功能打开。

|资料来源|

名词定义:https://blog.csdn.net/huwh_/article/details/96016049
技术特点:https://blog.csdn.net/huwh_/article/details/96016423
https://kubernetes.io/docs/concepts/storage/storage-classes/

上一篇:发布一个WinForm控件--TableViewControl


下一篇:如何在 Ubuntu 环境下搭建邮件服务器(三)