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

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

Este artigo aplica-se a Este artigo não se aplica a Este artigo não está vinculado a nenhum produto específico. Nem todas as versões do produto estão identificadas neste artigo.

Instruções

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 的,不能使用



 

Mais informações

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”

Produtos afetados

PowerMax, PowerMax, PowerMax 2000, PowerMax 2500, PowerMax 8000, PowerMax 8500, PowerMaxOS 10
Propriedades do artigo
Número do artigo: 000472526
Tipo de artigo: How To
Último modificado: 03 jun. 2026
Versão:  1
Encontre as respostas de outros usuários da Dell para suas perguntas.
Serviços de suporte
Verifique se o dispositivo está coberto pelos serviços de suporte.