Red Hat OpenShift veya Upstream Kubernetes ile ağ geçidi bekçileri

Zusammenfassung: Bu KB, PowerMax Gatekeeper'ları Red Hat OpenShift veya Yukarı Akış Kubernetes ortamına sunmak için Red Hat GitHub kubevirt-rawio-addon deposunun nasıl kullanılacağını açıklamaktadır.

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 Gatekeepers

PowerMax Ağ Geçidi Bekçileri, Solutions Enabler komutları için SCSI hedefleri olarak işlev gören ve PowerMax'teki disklerden oyulmuş küçük cihazlardır (genellikle üç MB). Yapılandırma ve durum bilgileri, varsayılan olarak symapi_db.bin bir PowerMax ana bilgisayar veritabanı dosyasında tutulur. PowerMax yapılandırma veritabanı olarak bilinir. Ana bilgisayardan depolama dizilerine yapılan sorgulama sayısını azaltır. Ağ geçidi bekçileri, işletim sisteminin SCSI komutlarını manipülasyon olmadan kolayca iletmesi için ham cihazlar olmalıdır. Fiziksel ana bilgisayarlar her zaman Ağ Geçidi Bekçileri (desteklenen bir işletim sistemi ile) ile çalışsa da sanal ana bilgisayarlar, fiziksel ham aygıt eşlemeleri (RDM'ler), Windows veya Linux'ta Konuk içi iSCSI, Linux'ta Konuk içi NVMe/TCP veya geçiş aygıtları (NIC veya HBA) kullanan VMware ile sınırlıdır. Ancak yalnızca VMware, uygulanabilir bir Gatekeeper olarak kabul edilen gerçek bir ham aygıt sunabilir. Diğer sanallaştırma çözümleri, kullanıcının cihazları "ham" olarak sunmasına izin verir, ancak çözümleri bazı SCSI komutlarını engelleyerek Ağ Geçidi Bekçileri olarak kullanılmalarını engeller. Solutions Enabler, bunları Ağ Geçidi Bekçileri olarak etiketler, ancak aşağıdaki gibi bir hata bildirir.

Ayrıca, Kapı Bekçilerini incelerseniz, "CLS" veya kapalı bir durum gösterirler.

Bu nedenle, gerekli SCSI komutlarını geçiremezsiniz.

Bu çözümden faydalanmak için seçilen işletim sisteminde Solutions Enabler ın desteklediği bir protokol kullanmanız gerekir. Lütfen ürün belgelerine bakın.

Red Hat GitHub çözümü

Dell, bazı ortak müşterilerimiz için OpenShift ortamında Ağ Geçidi Bekçilerine yönelik geçici bir çözüm geliştirme konusunda Red Hat'ten yardım talebinde bulundu. Bu amaçla, uygulamada küçük farklılıklarla hem OpenShift hem de Upstream Kubernetes için çalışan bir çözüm oluşturdular. GitHub deposu, burada bulunduğu gibi kubevirt-rawio-addon olarak adlandırılır: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub bir benioku https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md içerir.

Eklenti birkaç bileşen yükler:

  • Nesneleri anında değiştirmek için mutasyona uğrayan web kancaları
  • Webhook'u doğrulama - OpenShift'e özel güvenlik kontrolü
  • Ayrıcalıklı yeteneklere izin vermek için güvenlik yapılandırması
  • Sepet kancası 

Sepet, VM kapsülüyle birlikte çalışan ve başlamadan önce VM'nin düşük düzeyli yapılandırmasını değiştiren küçük bir ek kapsayıcıdır. KubeVirt tarafından oluşturulan VM yapılandırmasını yakalar, açıklamalı diskleri bulur ve rawio=yes ayarlar. KubeVirt daha sonra XML'i geri alır. Libvirt/QEMU temel mimarisi bunu destekler, ancak bunu açığa çıkarmaz, bu nedenle bu küçük ayarlama gereklidir. KubeVirt'in bunu gelecekte ortaya çıkarması mümkündür ve bu noktada geçici çözüm gereksiz olacaktır.


  

OpenShift'te Uygulama

Depo, bu çözümü uygulamak için tüm yönergeleri içerir. Çözümün sahibi Red Hat olduğundan Dell, daha sonra değişikliğe uğrayabilecek olan güncel talimatların uygulanmasını önerir.  Dell, bu değişiklikleri yansıtmak için KB yi güncellemez. Kolaylık olması açısından aşağıdaki temel bilgileri sağlıyoruz ancak bu KB'nin kullanıcılarının bunları depoyla birlikte kullanmalarını öneririz.

Belirtildiği gibi, bunu OpenShift veya Yukarı Akış Kubernetes üzerinde uygulayabilirsiniz. Adımlar OpenShift'e yönelik olduğundan, Upstream Kubernetes yapıyorsanız dikkat edilmesi gereken birkaç nokta vardır.

  • Vanilya K8'lerde uygularsanız, cert-manager'ın kurulu olması gerekir. PowerMax CSI sürücüsü yüklüyse bu mevcut olur.
  • Vanilya K8'lerde uygularsanız, ayrıcalıklı bir ad alanına ihtiyacınız vardır. Komut dosyalarında ad alanını kullanabilir veya kendi ad alanınızı oluşturup ardından komut dosyalarını değiştirebilirsiniz.

Uygulama için ihtiyacınız olan iki komut dosyası hack klasöründedir. rawio-setup.sh ilk komut dosyasıdır ve her iki platform için de aynıdır ancak yalnızca OpenShift'te bulunan openshift-cnv ad alanına bağlı olduğunu unutmayın. Ad alanını ekleyin veya yeni bir ad alanı oluşturun ve K8s komut dosyasını değiştirin. VM oluşturma betiği platforma özgüdür, ancak yine openshift-cnv ad alanını kullanır. OpenShift için bu değer rawio-create-vm-openshift.sh. Komut dosyaları bir test ortamı oluşturmak üzere tasarlanmıştır ve üretim kurulumu için değişiklik yapılması gerekir. Özellikle, rawio-setup.sh komut dosyası sanal bir SCSI aygıtı oluşturur. Bunun yerine, komut dizisini PowerMax depolama sınıfınızı kullanacak şekilde değiştirin. Ayrıca komut dosyası, VM'yi zamanlamak için tek bir düğüm olduğunu varsayar. Herhangi bir çalışan düğümünde çalışmasına izin vermek için değiştirin. Komut dosyası, yerleşik bir Fedora işletim sistemi kullanır.

Örnek komut dosyaları Tamamlayıcı İçerik'te yer almaktadır.

Temel adımlar

Geleneksel 3 MB'lık bir Ağ Geçidi Denetleyicisi isteseniz bile PowerMax CSI'nin 50 MB'den küçük bir aygıt oluşturamayacağını unutmayın. Herhangi bir soruna neden olmaz.

Diğer sanallaştırma çözümleri

Aşağıdaki çözümlerin hiçbiri bu Red Hat deposuyla çalışmaz.

  • SUSE Harvester - SUSE gibi K8s tabanlı çözümler kendi çözümlerini geliştirmelidir
  • Proxmox veya Oracle KVM (oVirt) gibi KVM çözümleri - bunlar KubeVirt tabanlı değildir ve kullanılamaz



 

Weitere Informationen

rawio-setup.sh

 

#!/bin/bash

 

set -euo pipefail

 

if [ -z "${KUBEVIRT_NAMESPACE:-}" ]; Sonra
  kubectl gets ns openshift-cnv &>/dev/null; then
    NAMESPACE="openshift-cnv"
  Başka
    NAMESPACE="kubevirt"
  fi
Başka
  NAMESPACE="$KUBEVIRT_NAMESPACE
fi

 

PVC_NAMESPACE="${PVC_NAMESPACE:-varsayılan}"
SC_NAME="powermax-2164-default
PVC_NAME="scsi-rawio-pvc"

 

# Ad alanı yoksa ad alanı oluştur
kubectl get ns "$PVC_NAMESPACE" >/dev/null 2>&1 || kubectl create ns "$PVC_NAMESPACE

 

# PVC Oluştur
echo "$PVC_NAMESPACE ad alanında PVC $PVC_NAME oluşturma..."

 

kubectl apply -f - <<EOF
apiVersion: v1
Tür: PersistentVolumeClaim
Meta veri:
  name: $PVC_AD
  Ad alanı: $PVC_NAMESPACE
Spec:
  storageClassName: $SC_AD
  volumeMode: Engelle
  erişim Modları:
    - ReadWriteOnce
  Kaynak:
    Istek:
      Depolama: 8Mi
EOF

 

yankı ""
echo "=== Kurulum tamamlandı ==="
echo "StorageClass:   $SC_NAME
echo "PVC:            $PVC_NAMESPACE/$PVC_NAME
yankı ""
 

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

rawio-create-vm-openshift.sh

 

#!/bin/bash

 

set -euo pipefail

 

PVC_NAMESPACE="${PVC_NAMESPACE:-varsayılan}"
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 in namespace $PVC_NAMESPACE

 

kubectl apply -f - <<EOF
apiVersion: v1
Tür: Hizmet Hesabı
Meta veri:
  name: $VM_SA
  Ad alanı: $PVC_NAMESPACE
EOF

 

echo "$VM_SA hizmet hesabı için SCC $SCC_NAME oluşturuluyor"

 

kubectl apply -f - <<EOF
apiVersion: security.openshift.io/v1
Tür: SecurityContextConstraints
Meta veri:
  name: $SCC_AD
Öncelik: 11.
allowPrivilegedContainer: false
allowHostDirVolumePlugin: true
allowHostNetwork: false
allowHostPorts: false
allowHostPID: false
allowHostIPC: false
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP
defaultAddCapabilities: []
seccompProfiles:
  - çalışma zamanı/varsayılan
  - Sınırlandırılmamış
  - localhost/kubevirt/kubevirt.json
Birim:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
fsGroup:
  type: RunAsAny
supplementalGroups:
  type: RunAsAny
Kullanıcı:
  - Sistem:Hizmet Hesabı:${PVC_NAMESPACE}:${VM_SA}
groups: []
EOF

 

echo "$PVC_NAMESPACE ad alanında VM $VM_NAME oluşturma"
echo "PVC:               $PVC_NAME
echo "ServiceAccount:    $VM_SA
echo "Container disk:    $CONTAINER_DISK"

 

kubectl apply -f - <<EOF
apiVersion: kubevirt.io/v1
Tür: Sanal Makine
Meta veri:
  name: $VM_AD
  Ad alanı: $PVC_NAMESPACE
  Ek açıklama -ları:
    kubevirt.io/rawioSupport: "lun0"
Spec:
  Running: True
  Şablon:
    Meta veri:
      Ek açıklama -ları:
        kubevirt.io/rawioSupport: "lun0"
    Spec:
      Etki alanı:
        Cpu:
          Çekirdek: 2
        Kaynak:
          Istek:
            Bellek: 2 Gi
        Aygıtları:
          Rng: {}
          Disk:
            - Ad: disk0
              Disk:
                Otobüs: Virtio
            - İsim: LUN0
              Lun:
                Bus: SCSI
            -Adı: $VM_SA
              Disk:
                Otobüs: Virtio
      Birim:
        - Ad: disk0
          containerDisk:
            Görüntü: $CONTAINER_DISK
        - İsim: LUN0
          persistentVolumeClaim:
            claimName: $PVC_AD
        -Adı: $VM_SA
          serviceAccount:
            serviceAccountName: $VM_SA
EOF

 

yankı ""
echo "VM $VM_NAME oluşturuldu. Başlamasını bekliyorum..."
echo "Watch with: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w"
echo "Konsol:    virtctl console -n $PVC_NAMESPACE $VM_NAME
yankı ""
echo "Temizle:"
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.