使用 Red Hat OpenShift 或上游 Kubernetes 的閘道管理員

Resumo: 本 KB 說明如何使用 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 解決方案

Dell 要求 Red Hat 協助為我們共同的部分客戶開發 OpenShift 環境中閘道管理員的因應措施。為此,他們創建了一個適用於 OpenShift 和上游 Kubernetes 的解決方案,但在實施上略有不同。GitHub 儲存庫稱為 kubevirt-rawio-addon,位於此處: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub 包含一個自述 https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md

該載入項安裝多個元件:

  • 變更 webhook 以動態修改物件
  • 驗證 webhook - OpenShift 專屬安全檢查
  • 允許特權功能的安全設定
  • 挎斗掛鉤 

挎斗是一個額外的小型容器,它與虛擬機容器一起運行,並在虛擬機啟動之前修改虛擬機的低級別配置。它會攔截 KubeVirt 生成的 VM 組態,找到已註解的磁碟,並設定 rawio=yes。KubeVirt 隨後會取回 XML。libvirt/QEMU 底層架構支援這一點,但不會公開它,因此需要進行這種細微的調整。將來 KubeVirt 可能會公開此問題,此時將不需要解決方法。


  

OpenShift 實作

存儲庫包含實現此解決方案的所有說明。由於 Red Hat 擁有解決方案,因此 Dell 建議您遵循目前的指示,未來可能會變更。  Dell 不會更新 KB 來反映這些變更。出於禮貌,我們在下方提供基本資訊,但我們鼓勵本 KB 的使用者將其與儲存庫一起使用。

如前所述,您可以在 OpenShift 或上游 Kubernetes 上實作。由於步驟是 OpenShift,如果您執行上游 Kubernetes,有幾個注意事項。

  • 如果在 vanilla K8s 上實現,則必須安裝證書管理員。如果已安裝 PowerMax CSI 驅動程式,則會存在此問題。
  • 如果在 vanilla K8s 上實現,則需要特權命名空間。可以在腳本中使用命名空間,也可以創建自己的命名空間,然後修改腳本。

實施所需的兩個腳本位於 hack 資料夾中。rawio-setup.sh 是第一個指令檔,任一平台都是相同的,但請注意,它依賴於僅存在於 OpenShift 上的 openshift-cnv 命名空間。新增命名空間或建立新的命名空間,然後修改 K8s 的指令檔。VM 建立指令檔為平台專屬,但同樣使用 openshift-cnv 命名空間。對於 OpenShift,它是 rawio-create-vm-openshift.sh。這些指令檔旨在建立測試環境,需要修改才能進行生產設定。具體而言,rawio-setup.sh 指令檔會建立虛擬 SCSI 裝置。請改為修改指令檔以使用 PowerMax 儲存類別。此外,該腳本假定單個節點用於計劃 VM。修改它以允許它在任何工作器節點上運行。該腳本使用預運行的Fedora OS。

範例指令檔位於 補充內容中。

基本步驟

請注意,即使您要求傳統的 3 MB 閘道管理員,PowerMax CSI 也無法建立小於 50 MB 的裝置。它不會導致問題。

其他虛擬化解決方案

下列解決方案均不適用於此 Red Hat 儲存庫。

  • 基於 K8s 的解決方案,如 SUSE 收割機 - SUSE 必須開發自己的解決方案
  • 像 Proxmox 或 Oracle KVM (oVirt) 這樣的 KVM 解決方案 - 這些不是基於 KubeVirt 的,不能使用



 

Mais informações

rawio-setup.sh

 

#!/bin/bash

 

set -euo pipefail

 

如果 [ -z “${KUBEVIRT_NAMESPACE:-}” ];然後
  如果 kubectl get ns openshift-cnv &>/dev/null;則
    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
回應「在命名空間中建立 PVC $PVC_NAME $PVC_NAMESPACE...」

 

kubectl apply -f - <<EOF
api版本:v1
種類:PersistentVolumeClaim
中繼資料:
  name: $PVC名稱
  命名空間:$PVC_命名空間
規格:
  儲存裝置類別名稱:$SC名稱
  音量模式:封鎖
  存取模式:
    - 只讀一次
  資源:
    要求:
      儲存裝置:8英里
EOF

 

回顯“”
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”

 

呼應「在命名空間 $PVC_NAMESPACE 中建立 ServiceAccount $VM_SA」

 

kubectl apply -f - <<EOF
api版本:v1
種類:服務帳戶
中繼資料:
  name: $VM_SA
  命名空間:$PVC_命名空間
EOF

 

回應「為服務帳戶 $VM_SA 建立 SCC $SCC_NAME」

 

kubectl apply -f - <<EOF
api版本: security.openshift.io/v1
種類:SecurityContextConstraint(安全內容約束)
中繼資料:
  name: $SCC名稱
優先順序:11
allowPrivilegedContainer:false
allowHostDirVolumePlugin:true
allowHostNetwork:false
allowHostPorts:false
allowHostPID:false
allowHostIPC:false
允許的功能:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - 塞特夫卡普
defaultAddCapabilities:[]
seccompProfiles:
  - 執行時/預設值
  - 無限制
  - 本地主機/庫貝維爾特/kubevirt.json
磁碟區:
  - "*"
readOnlyRootFilesystem:false
以使用者身分執行:
  請輸入:RunAsAny
seLinuxContext:
  請輸入:RunAsAny
fsgroup:
  請輸入:RunAsAny
補充群組:
  請輸入:RunAsAny
使用者:
  - 系統:服務帳戶:${PVC_NAMESPACE}:${VM_SA}
groups: []
EOF

 

呼應「在命名空間 $PVC_NAMESPACE 中建立 VM $VM_NAME」
回應「PVC:               $PVC_NAME》
echo “ServiceAccount:    $VM_SA」
回應「容器磁碟:    $CONTAINER_磁碟」

 

kubectl apply -f - <<EOF
api版本: kubevirt.io/v1
種類:虛擬機器
中繼資料:
  name: $VM名稱
  命名空間:$PVC_命名空間
  註解:
    kubevirt.io/rawioSupport:「lun0」
規格:
  執行:真
  範本:
    中繼資料:
      註解:
        kubevirt.io/rawioSupport:「lun0」
    規格:
      網域:
        中央處理器:
          核心:2
        資源:
          要求:
            記憶體:2吉
        裝置:
          RNG:{}
          磁碟:
            - 名稱:磁碟0
              磁碟:
                巴士:維蒂奧
            - 名稱:LUN0
              LUN:
                匯流排:SCSI
            - 名稱:$VM_SA
              磁碟:
                巴士:維蒂奧
      磁碟區:
        - 名稱:磁碟0
          containerDisk:
            圖:$CONTAINER_磁碟
        - 名稱:LUN0
          persistentVolumeClaim:
            請領名稱:$PVC名稱
        - 名稱:$VM_SA
          serviceAccount:
            serviceAccountName:$VM_SA
EOF

 

回顯“”
回應「VM $VM_NAME created.等它開始...”
echo “watch with: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w”
echo “主控台:    virtctl 主控台 -n $PVC_NAMESPACE $VM_NAME」
回顯“”
回顯「清理:」
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.