Red Hat OpenShift 或上游 Kubernetes 的网关守护设备

Zusammenfassung: 本知识库文章介绍如何使用 Red Hat GitHub kubevirt-rawio-addon 存储库向 Red Hat OpenShift 或上游 Kubernetes 环境呈现 PowerMax 网关守护设备。

Dieser Artikel gilt für Dieser Artikel gilt nicht für Dieser Artikel ist nicht an ein bestimmtes Produkt gebunden. In diesem Artikel werden nicht alle Produktversionen aufgeführt.

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 操作系统。

示例脚本位于 补充内容中。

基本步骤

请注意,即使您请求传统的 3 MB 网关守护设备,PowerMax CSI 也无法创建小于 50 MB 的设备。它不会导致问题。

其他虚拟化解决方案

以下两种解决方案都不适用于此 Red Hat 存储库。

  • 基于 K8s 的解决方案(如 SUSE Harvester )— SUSE 必须开发自己的解决方案
  • KVM 解决方案,如 Proxmox 或 Oracle KVM (oVirt) — 这些不是基于 KubeVirt 的,不能使用



 

Weitere Informationen

rawio-setup.sh

 

#!/bin/bash

 

set -euo pipefail

 

如果 [ -z “${KUBEVIRT_NAMESPACE:-}” ];然后
  if kubectl get ns openshift-cnv &>/dev/null; then
    NAMESPACE=“openshift-cnv”
  还
    NAMESPACE=“kubevirt”
  fi
  NAMESPACE=“$KUBEVIRT_NAMESPACE”
fi

 

PVC_NAMESPACE=“${PVC_NAMESPACE:-default}”
SC_NAME=“powermax-2164-default”
PVC_NAME=“scsi-rawio-pvc”

 

# 如果命名空间不存在,则创建命名空间
kubectl get ns “$PVC_NAMESPACE” >/dev/null 2>&1 || kubectl create ns “$PVC_NAMESPACE”

 

# 创建 PVC
echo “Creating PVC $PVC_NAME in namespace $PVC_NAMESPACE...”

 

kubectl apply -f - <<EOF
apiVersion:v1
种类:PersistentVolumeClaim
元:
  name:$PVC_NAME
  命名 空间:$PVC_NAMESPACE
规范:
  storageClassName:$SC_NAME
  volumeMode:阻止
  accessModes:
    - 读写一次
  资源:
    请求:
      存储:8米
Eof

 

回声 “”
echo “=== 设置完成 ===”
echo “StorageClass:   $SC_NAME”
回声“PVC:            $PVC_NAMESPACE/$PVC_NAME”
回声 “”
 

*******************************************

rawio-create-vm-openshift.sh

 

#!/bin/bash

 

set -euo pipefail

 

PVC_NAMESPACE=“${PVC_NAMESPACE:-default}”
PVC_NAME=“${PVC_NAME:-scsi-rawio-pvc}”
VM_NAME=“${VM_NAME:-rawio-test-vm}”
VM_SA=“${VM_SA:-rawio-vm}”
CONTAINER_DISK=“${CONTAINER_DISK:-quay.io/kubevirt/fedora-with-testtooling:v20240717-a087e7e}”
SCC_NAME=“${SCC_NAME:-rawio-vm}”
KUBEVIRT_NAMESPACE=“openshift-cnv”

 

echo “Creating ServiceAccount $VM_SA in namespace $PVC_NAMESPACE”

 

kubectl apply -f - <<EOF
apiVersion:v1
种类:ServiceAccount
元:
  name:$VM_SA
  命名 空间:$PVC_NAMESPACE
Eof

 

echo “Creating SCC $SCC_NAME for service account $VM_SA”

 

kubectl apply -f - <<EOF
apiVersion:security.openshift.io/v1
种类:SecurityContextConstraints
元:
  name:$SCC_NAME
优先:11
allowPrivilegedContainer: false
allowHostDirVolumePlugin: true
allowHostNetwork: false
allowHostPorts: false
allowHostPID: false
allowHostIPC:false
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP胶囊
defaultAddCapabilities:[]
seccompProfiles:
  - 运行时/默认
  -无 侧 限
  - localhost/kubevirt/kubevirt.json
卷:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type:RunAsAny
seLinuxContext:
  type:RunAsAny
fsGroup:
  type:RunAsAny
supplementalGroups:
  type:RunAsAny
用户:
  - 系统:服务帐户:${PVC_NAMESPACE}:${VM_SA}
groups:[]
Eof

 

echo “在命名空间 $PVC_NAMESPACE 中创建 VM $VM_NAME”
回声“PVC:               $PVC_NAME”
echo “ServiceAccount:    $VM_SA”
echo “Container disk:    $CONTAINER_DISK”

 

kubectl apply -f - <<EOF
apiVersion:kubevirt.io/v1
种类:虚拟机
元:
  name:$VM_NAME
  命名 空间:$PVC_NAMESPACE
  注释:
    kubevirt.io/rawioSupport:“lun0”
规范:
  Running: true
  模板:
    元:
      注释:
        kubevirt.io/rawioSupport:“lun0”
    规范:
      域:
        Cpu:
          核心:2
        资源:
          请求:
            记忆:2吉
        设备:
          RNG:{}
          磁盘:
            - 名称:disk0
              磁盘:
                巴士: virtio
            - 名称:LUN0
              伦:
                总线:SCSI
            -名字:$VM_SA
              磁盘:
                巴士: virtio
      卷:
        - 名称:disk0
          containerDisk:
            图像:$CONTAINER_DISK
        - 名称:LUN0
          persistentVolumeClaim:
            claimName:$PVC_NAME
        -名字:$VM_SA
          serviceAccount:
            serviceAccountName:$VM_SA
Eof

 

回声 “”
echo “VM $VM_NAME created.等待它开始......”
echo “Watch with: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w”
echo “控制台:    virtctl console -n $PVC_NAMESPACE $VM_NAME”
回声 “”
echo “清理:”
echo “kubectl delete vm -n $PVC_NAMESPACE $VM_NAME”
echo “kubectl delete scc $SCC_NAME”

Betroffene Produkte

PowerMax, PowerMax, PowerMax 2000, PowerMax 2500, PowerMax 8000, PowerMax 8500, PowerMaxOS 10
Artikeleigenschaften
Artikelnummer: 000472526
Artikeltyp: How To
Zuletzt geändert: 03 Juni 2026
Version:  1
Antworten auf Ihre Fragen erhalten Sie von anderen Dell NutzerInnen
Support Services
Prüfen Sie, ob Ihr Gerät durch Support Services abgedeckt ist.