创建存储类
创建存储类。
所需用户类型或访问级别:集群管理员
在创建存储类时,请考虑以下存储类及其关联的服务质量 (QoS)。
| 存储类名称 | QoS ((每秒输入/输出操作数 (IOPS)/大小) |
|---|---|
| ibmc-file-bronze | 2 IOPS |
| ibmc-file-silver | 4 IOPS |
| ibmc-file-gold | 10 IOPS |
| ibmc-file-custom | 可变大小/和 IOP |
| ibmc-block-bronze | 2 IOPS |
| ibmc-block-silver | 4 IOPS |
| ibmc-block-gold | 10 IOPS |
| ibmc-block-custom | 可变大小/和 IOP |
在 IBM Cloud Private 安装期间创建存储类
可以在安装 IBM Cloud Private 时创建存储类。 在安装完成后,系统会创建该存储类,并可以将其用于动态存储供应。
注:仅支持 Kubernetes 存储类。
完成下列步骤,以提供存储类定义文件:
- 使用存储类定义创建
YAML文件。 有关存储类定义的信息,请参阅 Kubernetes 文档。 - 将
YAML文件保存在/<installation_directory>/cluster/misc/storage_class文件夹中。
注:请勿将其他任何文件放入 /misc/storage_class 位置。 IBM Cloud Private 安装程序仅从目录中选取存储类 YAML 文件,并忽略其他任何文件。
存储类示例
有关在 IBM® Cloud Private 中创建 GlusterFS 和 vSphere 存储类的指示信息,请参阅为 GlusterFS 创建存储类和为 vSphere 卷创建存储类。
有关包含多个存储类定义的列表,请参阅 StorageClass。
基本存储类
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name:
provisioner: kubernetes.io/<plug-in-type>
parameters:
parameter 1: value
...
parameter N: value
其中:
kind: StorageClass是 API。apiVersion: storage.k8s.io/v1是 API 版本。metadata: name:是存储类的名称。provisioner: kubernetes.io/<plug-in-type>是存储供应方的名称。parameters用于描述属于该存储类的卷。 参数是可选参数,并因供应方而异。
GlusterFS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/glusterfs
parameters:
resturl: "http://127.0.0.1:8081"
clusterid: "630372ccdc720a92c681fb928f27b53f"
restauthenabled: "true"
restuser: "admin"
secretNamespace: "default"
secretName: "heketi-secret"
gidMin: "40000"
gidMax: "50000"
volumetype: "replicate:3"
其中:
resturl是按需供应 Gluster 卷的必需 Gluster REST 服务 URL 或 Heketi 服务 URL。 通用格式为IP address:Port。 如果 Heketi 服务在 Kubernetes 配置中表示为可路由服务,那么resturl的格式类似于http://heketi-storage-project.cloudapps.mystorage.com,其中 FQDN 是可解析的 Heketi 服务 URL。restauthenabled是 Gluster REST 服务认证布尔值,用于启用向 REST 服务器的认证。 如果此值为true,您必须指定restuser和restuserkey或secretNamespace+secretName。 不推荐使用该选项;指定以下任意参数时,将启用认证:restuserrestuserkeysecretNamesecretNamespace
restuser是可以在 Gluster 信任池中创建卷的 Gluster REST 服务用户或 Heketi 用户。restuserkey是用于向 REST 服务器认证的 Gluster REST 服务用户或 Heketi 用户的密码。 要支持secretNamespace+secretName,不推荐使用该选项。secretNamespace和secretName是可选的。 它们标识一个密钥实例,其中包含用于和 Gluster REST 服务进行通信的密码。 如果未指定secretNamespace和secretName,那么将使用空密码。 所提供的密钥必须具有类型“kubernetes.io/glusterfs”。clusterid: 630372ccdc720a92c681fb928f27b53f是可选的。 该标识是 Heketi 用于供应卷的集群的标识。 它还可以是一列以逗号分隔的集群标识。gidMin和gidMax是可选的。 它们是存储类 GID 范围的最小值和最大值。 系统会将该范围 (gidMin - gidMax) 中的唯一值 (GID) 用于动态供应的卷。 如果未指定gidMin和gidMax,那么将使用范围 2000 - 2147483647 中的值供应卷,2000 和 2147483647 分别是gidMin和gidMax的缺省值。volumetype是卷类型及其参数。 卷类型是可选的,如果未进行指定,那么供应方将决定卷类型。 示例:‘Replica volume’: volumetype: replicate:3,其中3是副本计数;‘Disperse/EC volume’: volumetype: disperse:4:2,其中4是数据,而2是冗余计数;‘Distribute volume’: volumetype: none。
vSphere
-
以用户指定的磁盘格式创建 PersistentVolume。
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fast provisioner: kubernetes.io/vsphere-volume parameters: diskformat: zeroedthick其中
diskformat值为thin、zeroedthick或eagerzeroedthick。 缺省值是thin。 -
在用户指定的数据存储中以某种磁盘格式创建 PersistentVolume。
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: fast provisioner: kubernetes.io/vsphere-volume parameters: diskformat: zeroedthick datastore: VSANDatastorediskformat:thin、zeroedthick或eagerzeroedthick。 缺省值:thin。datastore:您还可以在StorageClass中指定数据存储。 将在存储类中指定的数据存储(在本例中为VSANDatastore)上创建卷。 该字段是可选字段。 如果未指定它,那么按照先前的 YAML 描述中所述,将在用于初始化 vSphere Cloud Provider 的 vSphere 配置文件中指定的数据存储上创建卷。
-
使用用户指定的 VSAN 存储功能创建 PersistentVolume。
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: vsan-policy-fast provisioner: kubernetes.io/vsphere-volume parameters: diskformat: thin hostFailuresToTolerate: "1" diskStripes: "2" cacheReservation: "20" datastore: VSANDatastore您可以为 Kubernetes 内部的动态卷供应指定 VSAN 存储功能。
存储策略将捕获 PersistentVolume 的存储需求,例如性能和可用性。 这些策略决定了容器卷存储对象在数据存储中的供应和分配方式,以确保达到所要求的服务质量。 存储策略由存储功能组成,这些存储功能通常由“键/值”对表示。 键是数据存储可以提供的特定属性。 值是指标或者数据存储能够确保用于供应对象的范围,例如虚拟磁盘支持的容器卷。
VSAN 具备多项存储功能。 下表列出了 vSphere Cloud Provider 支持的 VSAN 存储功能:
| 存储功能名称 | 描述 |
|---|---|
| cacheReservation | 闪存读取缓存预留 |
| diskStripes | 每个对象的磁盘条带数 |
| forceProvisioning | 强制供应 |
| hostFailuresToTolerate | 可容忍的故障次数 |
| iopsLimit | 对象的 IOPS 限制 |
| objectSpaceReservation | 对象空间预留 |
vSphere 基础结构管理员在 Kubernetes 内部创建存储类时,可以根据存储功能为应用程序指定存储需求。 管理员创建 StorageClass 时,必须指定表 1 中使用的存储功能名称,因为这些名称可能与 VSAN 使用的名称不同。 例如,每个对象的磁盘条带数在 VSAN 文档中称为 stripeWidth。 但是,vSphere Cloud Provider 使用名称 diskStripes。