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.5.10. Azure Disk CSI Driver Operator
5.10.1. 概述 复制链接链接已复制到粘贴板!
OpenShift Container Platform 可以使用 Microsoft Azure Disk Storage 的 Container Storage Interface(CSI)驱动程序置备持久性卷(PV)。
在使用 CSI Operator 和驱动程序时,建议先熟悉 持久性存储和配置 CSI 卷。
要创建挂载到 Azure Disk 存储资产中的 CSI 置备 PV,OpenShift Container Platform 在 openshift-cluster-csi-drivers
命名空间中默认安装 Azure Disk CSI Driver Operator 和 Azure Disk CSI 驱动程序。
-
Azure Disk CSI Driver Operator 提供了一个名为
managed-csi
的存储类,您可以使用它来创建持久性卷声明(PVC)。Azure Disk CSI Driver Operator 支持动态卷置备,方法是允许按需创建存储卷,使集群管理员无需预置备存储。 - Azure Disk CSI 驱动程序 允许您创建并挂载 Azure Disk PV。
5.10.2. 关于 CSI 复制链接链接已复制到粘贴板!
在过去,存储厂商一般会把存储驱动作为 Kubernetes 的一个部分提供。随着容器存储接口 (CSI) 的实现,第三方供应商可以使用标准接口来提供存储插件,而无需更改核心 Kubernetes 代码。
CSI Operators 为 OpenShift Container Platform 用户提供了存储选项,如卷快照,它无法通过 in-tree 卷插件实现。
OpenShift Container Platform 默认使用 in-tree(非 CSI)插件来置备 Azure Disk 存储。
在以后的 OpenShift Container Platform 版本中,计划使用现有树内插件置备的卷迁移到对应的 CSI 驱动程序。CSI 自动迁移应该可以无缝进行。迁移不会改变您使用所有现有 API 对象的方式,如持久性卷、持久性卷声明和存储类。有关迁移的更多信息,请参阅 CSI 自动迁移。
完全迁移后,后续版本的 OpenShift Container Platform 中将最终删除树内插件。
5.10.3. 创建带有存储帐户类型的存储类 复制链接链接已复制到粘贴板!
存储类用于区分和划分存储级别和使用。通过定义存储类,用户可以获得动态置备的持久性卷。
在创建存储类时,您可以指定存储帐户类型。这与您的 Azure 存储帐户 SKU 层对应。有效选项包括 Standard_LRS
,Premium_LRS
,StandardSSD_LRS
,UltraSSD_LRS
,Premium_ZRS
, 和 StandardSSD_ZRS
。有关查找 Azure SKU 层的详情,请参考 SKU 类型。
ZRS 有一些区域限制。有关这些限制的详情,请参考 ZRS 限制。
先决条件
- 使用管理员权限访问 OpenShift Container Platform 集群
流程
使用以下步骤创建带有存储帐户类型的存储类。
使用类似如下的 YAML 文件创建设计存储帐户类型的存储类:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过列出存储类来确保创建了存储类:
oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
oc get storageclass
$ oc get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE azurefile-csi file.csi.azure.com Delete Immediate true 68m managed-csi (default) disk.csi.azure.com Delete WaitForFirstConsumer true 68m sc-prem-zrs disk.csi.azure.com Delete WaitForFirstConsumer true 4m25s
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 带有存储帐户类型的新存储类。
5.10.4. 用于部署带有使用 PVC 的巨型磁盘的机器的机器集 复制链接链接已复制到粘贴板!
您可以创建在 Azure 上运行的机器集,该机器集用来部署带有巨型磁盘的机器。ultra 磁盘是高性能存储,用于要求最苛刻的数据工作负载。
in-tree 插件和 CSI 驱动程序都支持使用 PVC 启用巨型 磁盘。您还可以在不创建 PVC 的情况下将巨型磁盘部署为数据磁盘。
5.10.4.1. 使用机器集创建带有巨型磁盘的机器 复制链接链接已复制到粘贴板!
您可以通过编辑机器集 YAML 文件在 Azure 上部署带有巨型磁盘的机器。
先决条件
- 已有 Microsoft Azure 集群。
流程
运行以下命令,复制现有的 Azure
MachineSet
自定义资源(CR)并编辑它:oc edit machineset <machine-set-name>
$ oc edit machineset <machine-set-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<machine-set-name>
是您要使用巨型磁盘置备机器的机器集。在指示的位置中添加以下行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用更新的配置创建机器集:
oc create -f <machine-set-name>.yaml
$ oc create -f <machine-set-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个包含以下 YAML 定义的存储类:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个持久性卷声明(PVC)来引用包含以下 YAML 定义的
ultra-disk-sc
存储类:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下 YAML 定义的 pod:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证机器是否已创建:
oc get machines
$ oc get machines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 机器应处于
Running
状态。对于正在运行并附加节点的机器,请运行以下命令验证分区:
oc debug node/<node-name> -- chroot /host lsblk
$ oc debug node/<node-name> -- chroot /host lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个命令中,
oc debug node/<node-name>
会在节点<node-name>
上启动一个 debugging shell,并传递一个带有--
的命令。传递的命令chroot /host
提供对底层主机操作系统二进制文件的访问,lsblk
显示连接至主机操作系统计算机的块设备。
后续步骤
要在 pod 中使用大量磁盘,请创建使用挂载点的工作负载。创建一个类似以下示例的 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.4.2. 启用 ultra 磁盘的机器集的故障排除资源 复制链接链接已复制到粘贴板!
使用本节中的信息从您可能会遇到的问题了解和恢复。
5.10.4.2.1. 无法挂载由巨型磁盘支持的持久性卷声明 复制链接链接已复制到粘贴板!
如果挂载了被巨型磁盘支持的持久性卷声明的问题,pod 会一直处于 ContainerCreating
状态,并触发警报。
例如,如果没有在支持托管 pod 的节点的机器上设置 additionalCapabilities.ultraSSDEnabled
参数,则会出现以下出错信息:
StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
要解决这个问题,请运行以下命令来描述 pod:
oc -n <stuck_pod_namespace> describe pod <stuck_pod_name>
$ oc -n <stuck_pod_namespace> describe pod <stuck_pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow