5.11. Azure Disk CSI Driver Operator
5.11.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.11.2. 关于 CSI 复制链接链接已复制到粘贴板!
在过去,存储厂商一般会把存储驱动作为 Kubernetes 的一个部分提供。随着容器存储接口 (CSI) 的实现,第三方供应商可以使用标准接口来提供存储插件,而无需更改核心 Kubernetes 代码。
CSI Operators 为 OpenShift Container Platform 用户提供了存储选项,如卷快照,它无法通过 in-tree 卷插件实现。
OpenShift Container Platform 为 Azure Disk in-tree 卷插件提供自动迁移到对应的 CSI 驱动程序。如需更多信息,请参阅 CSI 自动迁移。
5.11.3. 创建带有存储帐户类型的存储类 复制链接链接已复制到粘贴板!
存储类用于区分和划分存储级别和使用。通过定义存储类,用户可以获得动态置备的持久性卷。
在创建存储类时,您可以指定存储帐户类型。这与您的 Azure 存储帐户 SKU 层对应。有效选项包括 Standard_LRS
,Premium_LRS
,StandardSSD_LRS
,UltraSSD_LRS
,Premium_ZRS
,StandardSSD_ZRS
, 和 PremiumV2_LRS
。有关查找 Azure SKU 层的详情,请参考 SKU 类型。
ZRS 和 PremiumV2_LRS 都有一些区域限制。有关这些限制的详情,请参阅 ZRS 限制和 Premium_LRS 限制。
先决条件
- 使用管理员权限访问 OpenShift Container Platform 集群
流程
使用以下步骤创建带有存储帐户类型的存储类。
使用类似如下的 YAML 文件创建设计存储帐户类型的存储类:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 PremiumV2_LRS,在
storageclass.parameters
中指定cachingMode: None
。通过列出存储类来确保创建了存储类:
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.11.4. 用户管理的加密 复制链接链接已复制到粘贴板!
用户管理的加密功能允许您在安装过程中提供加密 OpenShift Container Platform 节点根卷的密钥,并允许所有受管存储类使用这些密钥加密置备的存储卷。您必须在 install-config YAML 文件中的 platform.<cloud_type>.defaultMachinePlatform
字段中指定自定义密钥。
此功能支持以下存储类型:
- Amazon Web Services (AWS) Elastic Block storage (EBS)
- Microsoft Azure Disk 存储
- Google Cloud Platform (GCP) 持久磁盘 (PD) 存储
- IBM Virtual Private Cloud (VPC) Block 存储
如果 OS (root) 磁盘已被加密,且存储类中没有定义加密密钥,Azure Disk CSI 驱动程序默认使用 OS 磁盘加密密钥来加密置备的存储卷。
有关为 Azure 安装用户管理加密的详情,请参考为 Azure 启用用户管理的加密。
5.11.5. 用于部署带有使用 PVC 的巨型磁盘的机器的机器集 复制链接链接已复制到粘贴板!
您可以创建在 Azure 上运行的机器集,该机器集用来部署带有巨型磁盘的机器。ultra 磁盘是高性能存储,用于要求最苛刻的数据工作负载。
in-tree 插件和 CSI 驱动程序都支持使用 PVC 启用巨型 磁盘。您还可以在不创建 PVC 的情况下将巨型磁盘部署为数据磁盘。
5.11.5.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.11.5.2. 启用 ultra 磁盘的机器集的故障排除资源 复制链接链接已复制到粘贴板!
使用本节中的信息从您可能会遇到的问题了解和恢复。
5.11.5.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