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 为 Azure Disk in-tree 卷插件提供自动迁移到对应的 CSI 驱动程序。如需更多信息,请参阅 CSI 自动迁移。
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>
上启动一个调试 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