Red Hat OpenShift 或上游 Kubernetes 的网关守护设备
Zusammenfassung: 本知识库文章介绍如何使用 Red Hat GitHub kubevirt-rawio-addon 存储库向 Red Hat OpenShift 或上游 Kubernetes 环境呈现 PowerMax 网关守护设备。
Weisungen
PowerMax 网关守护设备
PowerMax 网关守护设备是从 PowerMax 中的磁盘划分出来的小型设备(通常为 3 MB),充当 Solutions Enabler 命令的 SCSI 目标。配置和状态信息保存在 PowerMax 主机数据库文件中,默认情况下symapi_db.bin。它被称为 PowerMax 配置数据库。它减少了从主机到存储阵列的查询数量。网关守护设备必须是原始设备,以便操作系统只需传递 SCSI 命令而无需操作。虽然物理主机始终与网关守护设备(具有受支持的操作系统)配合使用,但虚拟主机仅限于使用物理原始设备映射 (RDM)、Windows 或 Linux 上的来宾内 iSCSI、Linux 上的来宾内 NVMe/TCP 或直通设备(NIC 或 HBA)的 VMware。但是,只有 VMware 可以提供被识别为可行网关守护设备的真正原始设备。其他虚拟化解决方案允许用户将设备呈现为“原始”设备,但其解决方案会阻止某些 SCSI 命令,从而阻止它们用作网关守护设备。Solutions Enabler 将它们标记为网关守护设备,但报告错误,如下所示。

此外,如果您检查网关守护设备,它们将显示“CLS”或已关闭状态。

因此,您无法传递必要的 SCSI 命令。
要利用此解决方案,您必须使用 Solutions Enabler 在所选操作系统上支持的协议。请参阅产品文档。
Red Hat GitHub 解决方案
戴尔请求 Red Hat 协助为我们的一些共同客户开发 OpenShift 环境中网关守护设备解决方法。为此,他们创建了一个适用于 OpenShift 和上游 Kubernetes 的解决方案,在实现方面略有不同。GitHub 存储库称为 kubevirt-rawio-adon,如下所示: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub 包含一个自述文件 https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md。
该附加组件安装多个组件:
- 改变 Webhook 以动态修改对象
- 验证 Webhook — 特定于 OpenShift 的安全检查
- 允许特权功能的安全配置
- Sidecar 挂钩
sidecar 是一个小型的额外容器,它与 VM Pod 一起运行,并在启动之前修改 VM 的低级配置。它会拦截 KubeVirt 生成的虚拟机配置,找到带注释的磁盘,并设置 rawio=yes。然后,KubeVirt 会取回 XML。libvirt/QEMU 底层架构支持这一点,但没有公开它,因此需要进行微小的调整。KubeVirt 将来可能会对此进行公开,届时就没有必要采取解决方法了。
在 OpenShift 上实施
存储库包含有关实施此解决方案的所有说明。由于 Red Hat 拥有该解决方案,因此戴尔建议遵循当前的说明,这些说明将来可能会发生变化。 戴尔不会更新知识库文章以反映这些更改。出于礼貌,我们在下面提供了基本信息,但鼓励本知识库的用户将它们与存储库一起使用。
如前所述,您可以在 OpenShift 或上游 Kubernetes 上实现此功能。由于步骤适用于 OpenShift,因此如果您执行上游 Kubernetes,则有几点需要注意。
- 如果在 vanilla K8s 上实现,则必须安装 cert-manager。如果安装了 PowerMax CSI 驱动程序,则存在此驱动程序。
- 如果在 vanilla K8s 上实现,则需要特权命名空间。您可以在脚本中使用命名空间,也可以创建自己的命名空间,然后修改脚本。
实现所需的两个脚本位于 hack 文件夹中。rawio-setup.sh 是第一个脚本,对于任一平台都是相同的,但请注意,它依赖于仅存在于 OpenShift 上的 openshift-cnv 命名空间。添加命名空间或创建新命名空间,然后修改 K8s 的脚本。虚拟机创建脚本对平台是唯一的,但同样使用 openshift-cnv 命名空间。对于 OpenShift,它是 rawio-create-vm-openshift.sh。这些脚本旨在创建测试环境,并且需要修改以进行生产设置。具体而言,rawio-setup.sh 脚本会创建虚拟 SCSI 设备。而是修改脚本以使用您的 PowerMax 存储类。此外,该脚本假定有一个节点来计划虚拟机。修改它以允许它在任何工作节点上运行。该脚本使用预构建的 Fedora 操作系统。
示例脚本位于 补充内容中。
基本步骤
- 克隆存储库: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- 安装清单: oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- 安装 sidecar: oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{“op”:“add”、“path”:“/spec/configuration/developerConfiguration/featureGates/-”, “value”:“Sidecar”}]'
- 运行设置: rawio-setup.sh
- 创建 VM: rawio-create-vm-openshift.sh
- 安装您的操作系统(假设您没有使用预构建的操作系统)
请注意,即使您请求传统的 3 MB 网关守护设备,PowerMax CSI 也无法创建小于 50 MB 的设备。它不会导致问题。


其他虚拟化解决方案
以下两种解决方案都不适用于此 Red Hat 存储库。
- 基于 K8s 的解决方案(如 SUSE Harvester )— SUSE 必须开发自己的解决方案
- KVM 解决方案,如 Proxmox 或 Oracle KVM (oVirt) — 这些不是基于 KubeVirt 的,不能使用
Weitere Informationen
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh