This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.3. 定义 StorageClass
Storageclass 对象目前是一个全局范围的对象,必须由 cluster-admin
或 storage-admin
用户创建。
根据使用的平台,ClusterStorageOperator 可能会安装一个默认的 StorageClass。这个 StorageClass 由操作员拥有和控制。不能在定义注解和标签之外将其删除或修改。如果需要实现不同的行为,则必须定义自定义 StorageClass。
以下小节介绍了 StorageClass 的基本对象定义,以及每个支持的插件类型的具体示例。
4.3.1. 基本 StorageClass 对象定义 复制链接链接已复制到粘贴板!
以下介绍了用来配置一个 StorageClass 所需的参数和默认值。这个示例使用 AWS ElasticBlockStore (EBS) 对象定义。
StorageClass 定义示例
4.3.2. StorageClass 注解(annotations) 复制链接链接已复制到粘贴板!
如需把一个 StorageClass 设置为默认在集群范内有效,把以下注解添加到 StorageClass 的元数据中:
storageclass.kubernetes.io/is-default-class: "true"
storageclass.kubernetes.io/is-default-class: "true"
例如:
这将使任何没有指定特定卷的 PVC 通过默认的 StorageClass 被自动置备。
beta 注解 storageclass.beta.kubernetes.io/is-default-class
当前仍然可用,但将在以后的版本中被删除。
如需设置一个 StorageClass 的描述,把以下注解添加到 StorageClass 的元数据中:
kubernetes.io/description: My StorageClass Description
kubernetes.io/description: My StorageClass Description
例如:
4.3.3. OpenStack Cinder 对象定义 复制链接链接已复制到粘贴板!
cinder-storageclass.yaml
4.3.4. AWS Elastic Block Store (EBS) 对象定义 复制链接链接已复制到粘贴板!
aws-ebs-storageclass.yaml
4.3.5. Azure Disk 对象定义 复制链接链接已复制到粘贴板!
azure-advanced-disk-storageclass.yaml
- 1
- Azure 存储帐户名称。这必须与集群位于同一个资源组中。如果指定了存储帐户,则忽略
location
。如果没有指定存储帐户,则在与集群相同的资源组中创建一个新的存储帐户。如果您要指定StorageAccount
,则kind
的值必须是Dedicated
。 - 2
- Azure 存储帐户 SKU 层。默认为空。请注意,高级虚拟机可以同时附加
Standard_LRS
和Premium_LRS
磁盘,标准虚拟机只能附加Standard_LRS
磁盘,受管虚拟机只能附加受管磁盘,非受管虚拟机则只能附加非受管磁盘。 - 3
- 可能的值有
Shared
(默认)、Dedicated
和Managed
。-
如果
kind
设为Shared
,Azure 会在与集群相同的资源组中的几个共享存储帐户下创建所有未受管磁盘。 -
如果
kind
设为Managed
,Azure 会创建新的受管磁盘。 如果
kind
设为Dedicated
,并且指定了StorageAccount
,Azure 会将指定的存储帐户用于与集群相同的资源组中新的非受管磁盘。为此,请确保:- 指定的存储帐户必须位于同一区域。
- Azure Cloud Provider 必须对存储帐户有写入权限。
-
如果
kind
设为Dedicated
,并且未指定StorageAccount
,Azure 会在与集群相同的资源组中为新的非受管磁盘创建一个新的专用存储帐户。
-
如果
4.3.6. Azure File 对象定义 复制链接链接已复制到粘贴板!
Azure File StorageClass 使用 Secret 来存储创建 Azure File 共享所需的 Azure 存储帐户名称和存储帐户密钥。这些权限是在以下流程中创建的。
流程
定义允许创建和查看 Secret 的 ClusterRole:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要查看并创建 Secret 的 ClusterRole 名称。
将 ClusterRole 添加到 ServiceAccount:
oc adm policy add-cluster-role-to-user <persistent-volume-binder-role> system:serviceaccount:kube-system:persistent-volume-binder
$ oc adm policy add-cluster-role-to-user <persistent-volume-binder-role> system:serviceaccount:kube-system:persistent-volume-binder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Azure File StorageClass:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- StorageClass 的名称。PersistentVolumeClaim 使用这个 StorageClass 来置备相关的 PersistentVolume。
- 2
- Azure 存储帐户的位置,如
eastus
。默认为空,表示将在 OpenShift Container Platform 集群的位置创建新的 Azure 存储帐户。 - 3
- Azure 存储帐户的 SKU 层,如
Standard_LRS
。默认为空,表示将使用Standard_LRS
SKU 创建新的 Azure 存储帐户。 - 4
- Azure 存储帐户的名称。如果提供了存储帐户,则忽略
skuName
和location
。如果没有提供存储帐户,则 StorageClass 会为任何与定义的skuName
和location
匹配的帐户搜索与资源组关联的存储帐户。
4.3.6.1. 使用 Azure File 时的注意事项 复制链接链接已复制到粘贴板!
默认 Azure File StorageClass 不支持以下文件系统功能:
- 符号链接
- 硬链接
- 扩展属性
- 稀疏文件
- 命名管道
另外,Azure File 挂载目录的所有者用户标识符 (UID) 与容器的进程 UID 不同。可在 StorageClass 中指定 uid
挂载选项来定义用于挂载的目录的特定用户标识符。
以下 StorageClass 演示了修改用户和组标识符,以及为挂载的目录启用符号链接。
4.3.7. GCE PersistentDisk (gcePD) 对象定义 复制链接链接已复制到粘贴板!
gce-pd-storageclass.yaml
- 1
- 选择
pd-standard
或pd-ssd
。默认为pd-ssd
。
4.3.8. VMware vSphere 对象定义 复制链接链接已复制到粘贴板!
vsphere-storageclass.yaml
- 1
- 有关在 OpenShift Container Platform 中使用 VMware vSphere 的详情,请参阅 VMware vSphere 文档。
- 2
diskformat
:thin
、zeroedthick
和eagerzeroedthick
都是有效的磁盘格式。如需有关磁盘格式类型的更多详情,请参阅 vSphere 文档。默认值为thin
。
4.3.9. Red Hat OpenShift Container Storage 对象定义 复制链接链接已复制到粘贴板!
使用 Red Hat OpenShift Container Storage 时,当从 Operator Hub 部署 Red Hat OpenShift Container Storage 4.2 时,会创建动态卷置备的存储类,如 验证是否创建并列出了存储类所述。