Poortwachters met Red Hat OpenShift of upstream Kubernetes

Zusammenfassung: In dit KB-artikel wordt uitgelegd hoe u de Red Hat GitHub kubevirt-rawio-addon repository kunt gebruiken om PowerMax Gatekeepers te presenteren aan een Red Hat OpenShift- of upstream Kubernetes-omgeving. ...

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 Gatekeepers zijn kleine apparaten (meestal drie MB's) die zijn gemaakt van schijven in de PowerMax en die fungeren als SCSI-doelen voor Solutions Enabler-opdrachten. Configuratie- en statusinformatie wordt standaard bijgehouden in een PowerMax-hostdatabasebestand, symapi_db.bin. Dit staat bekend als de PowerMax-configuratiedatabase. Het vermindert het aantal vragen van de host naar de storage-arrays. Poortwachters moeten onbewerkte apparaten zijn, zodat het besturingssysteem de SCSI-commando's gewoon doorgeeft zonder manipulatie. Hoewel fysieke hosts altijd werken met Gatekeepers (met een ondersteund besturingssysteem), zijn virtuele hosts beperkt tot VMware met behulp van fysieke onbewerkte apparaattoewijzingen (RDM's), iSCSI voor gasten op Windows of Linux, NVMe/TCP voor gasten op Linux of passthrough-apparaten (NIC of HBA). Alleen VMware kan echter een echt onbewerkt apparaat presenteren dat wordt erkend als een levensvatbare Gatekeeper. Met andere virtualisatieoplossingen kan de gebruiker apparaten als 'onbewerkt' presenteren, maar hun oplossingen blokkeren sommige SCSI-opdrachten, waardoor ze niet als poortwachters kunnen worden gebruikt. Solutions Enabler labelt ze als poortwachters, maar rapporteert een fout zoals hieronder.

Bovendien, als je de poortwachters onderzoekt, tonen ze een status van "CLS" of gesloten.

Daarom kunt u de benodigde SCSI-commando's niet doorgeven.

Om van deze oplossing te profiteren, moet u een protocol gebruiken dat Solutions Enabler ondersteunt op het gekozen besturingssysteem. Raadpleeg de productdocumentatie.

Red Hat GitHub-oplossing

Dell heeft Red Hat om hulp gevraagd bij het ontwikkelen van een tijdelijke oplossing voor poortwachters in een OpenShift-omgeving voor een aantal van onze gemeenschappelijke klanten. Daartoe creëerden ze een oplossing die werkt voor zowel OpenShift als Upstream Kubernetes met kleine variaties in implementatie. De GitHub-repository heet kubevirt-rawio-addon en bevindt zich hier: https://github.com/openshift-cnv/kubevirt-rawio-addon De GitHub bevat een leesmij-https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md.

De add-on installeert verschillende componenten:

  • Webhooks muteren om objecten direct te wijzigen
  • Webhook valideren - een OpenShift-specifieke veiligheidscontrole
  • Beveiligingsconfiguratie om geprivilegieerde mogelijkheden toe te staan
  • Zijspanhaak 

De sidecar is een kleine extra container die naast de VM-pod wordt uitgevoerd en de configuratie op laag niveau van de VM wijzigt voordat deze wordt gestart. Het onderschept de door KubeVirt gegenereerde VM-configuratie, vindt de geannoteerde schijven en stelt rawio=yes in. KubeVirt krijgt dan de XML terug. De libvirt/QEMU onderliggende architectuur ondersteunt dit, maar stelt het niet bloot, dus deze kleine aanpassing is vereist. Het is mogelijk dat KubeVirt dit in de toekomst aan het licht brengt, waarna de tijdelijke oplossing overbodig zal zijn.


  

Implementatie op OpenShift

De repository bevat alle instructies voor het implementeren van deze oplossing. Omdat Red Hat eigenaar is van de oplossing, raadt Dell aan de huidige instructies te volgen, die in de toekomst kunnen veranderen.  Dell werkt de KB niet bij om deze wijzigingen weer te geven. Uit beleefdheid geven we de basisinformatie hieronder, maar moedigen gebruikers van deze KB aan om deze naast de repository te gebruiken.

Zoals opgemerkt, kunt u dit implementeren op OpenShift of Upstream Kubernetes. Aangezien de stappen voor OpenShift zijn, zijn er een paar punten die u kunt opmerken als u upstream Kubernetes gebruikt.

  • Als u implementeert op vanilla K8s, moet u cert-manager hebben geïnstalleerd. Als de PowerMax CSI-driver is geïnstalleerd, is deze aanwezig.
  • Als je implementeert op vanilla K8s, heb je een geprivilegieerde naamruimte nodig. U kunt de naamruimte in de scripts gebruiken of uw eigen naamruimte maken en vervolgens de scripts wijzigen.

De twee scripts die je nodig hebt voor de implementatie staan in de hackmap . Het rawio-setup.sh is het eerste script en is hetzelfde voor beide platforms, maar houd er rekening mee dat het afhankelijk is van de openshift-cnv-naamruimte die alleen aanwezig is op OpenShift. Voeg de namespace toe of maak een nieuwe en wijzig het script voor K8s. Het script voor het maken van de VM is uniek voor het platform, maar gebruikt opnieuw de openshift-cnv-namespace. Voor OpenShift is dit rawio-create-vm-openshift.sh. De scripts zijn ontworpen om een testomgeving te creëren en moeten worden aangepast voor een productie-installatie. Met name het rawio-setup.sh-script maakt een virtueel SCSI-apparaat. Pas in plaats daarvan het script aan om uw PowerMax-storageklasse te gebruiken. Bovendien gaat het script uit van één knooppunt voor het plannen van de VM. Wijzig het zodat het op elk werkknooppunt kan worden uitgevoerd. Het script maakt gebruik van een pre-buit Fedora OS.

Voorbeeldscripts zijn opgenomen in Supplemental Content.

Basisstappen

Houd er rekening mee dat de PowerMax CSI geen apparaat kan maken dat kleiner is dan 50 MB, zelfs niet als u om een traditionele poortwachter van 3 MB vraagt. Het veroorzaakt geen probleem.

Andere virtualisatieoplossingen

Geen van de onderstaande oplossingen werkt met deze Red Hat-repository.

  • Op K8s gebaseerde oplossingen zoals SUSE Harvester - SUSE moeten hun eigen oplossing ontwikkelen
  • KVM-oplossingen zoals Proxmox of Oracle KVM (oVirt) - deze zijn niet gebaseerd op KubeVirt en kunnen niet worden gebruikt



 

Weitere Informationen

rawio-setup.sh

 

#!/bin/bash

 

set -euo pipefail

 

als [ -z "${KUBEVIRT_NAMESPACE:-}" ]; Dan
  If kubectl get ns openshift-cnv &>/dev/null; then
    NAMESPACE="openshift-cnv"
  Anders
    NAMESPACE="kubevirt"
  Fi
Anders
  NAMESPACE="$KUBEVIRT_NAMESPACE"
Fi

 

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

 

# Maak een naamruimte aan als deze niet bestaat
kubectl get ns "$PVC_NAMESPACE" >/dev/null 2>&1 || kubectl create ns "$PVC_NAMESPACE"

 

# PVC maken
echo "PVC $PVC_NAME maken in namespace $PVC_NAMESPACE..."

 

kubectl apply -f - <<EOF
apiVersion: v1
Soort: PersistentVolumeClaim
Metagegevens:
  Naam: $PVC_NAME
  Naamruimte: $PVC_NAMESPACE
Spec:
  storageClassName: $SC_NAME
  volumemodus: Blokkeren
  accessModes:
    - ReadWriteOnce
  Middelen:
    Verzoeken:
      Opslag: 8 mijl
EOF

 

echo ""
echo "=== Installatie voltooid ==="
echo "StorageClass:   $SC_NAME"
echo "PVC:            $PVC_NAMESPACE/$PVC_NAME"
echo ""
 

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

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
Soort: Serviceaccount
Metagegevens:
  Naam: $VM_SA
  Naamruimte: $PVC_NAMESPACE
EOF

 

echo "Creating SCC $SCC_NAME for service account $VM_SA"

 

kubectl apply -f - <<EOF
apiVersion: security.openshift.io/v1
Soort: SecurityContextConstraints
Metagegevens:
  Naam: $SCC_NAME
Prioriteit: 11
allowPrivilegedContainer: false
allowHostDirVolumePlugin: true
allowHostNetwork: false
allowHostPorts: false
allowHostPID: false
allowHostIPC: false
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP
defaultAddCapabilities: []
seccompProfiles:
  - Runtime/standaard
  -Unconfined
  - localhost/kubevirt/kubevirt.json
Volumes:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
fsGroup:
  type: RunAsAny
aanvullendeGroepen:
  type: RunAsAny
Gebruikers:
  - systeem:serviceaccount:${PVC_NAMESPACE}:${VM_SA}
Groepen: []
EOF

 

echo "Creating VM $VM_NAME in namespace $PVC_NAMESPACE"
echo "PVC:               $PVC_NAAM"
echo "ServiceAccount:    $VM_SA"
echo "Container disk:    $CONTAINER_DISK"

 

kubectl apply -f - <<EOF
apiVersion: kubevirt.io/v1
Soort: VirtualMachine
Metagegevens:
  Naam: $VM_NAME
  Naamruimte: $PVC_NAMESPACE
  Aantekeningen:
    kubevirt.io/rawioSupport: "lun0"
Spec:
  Hardlopen: waar
  Sjabloon:
    Metagegevens:
      Aantekeningen:
        kubevirt.io/rawioSupport: "lun0"
    Spec:
      Domein:
        Cpu:
          Cores: 2
        Middelen:
          Verzoeken:
            Geheugen: 2 Gi
        Apparaten:
          Rng: {}
          Schijven:
            - Naam: disk0
              Schijf:
                Bus: Virtio
            - Naam: LUN0
              Lun:
                Bus: SCSI
            -Naam: $VM_SA
              Schijf:
                Bus: Virtio
      Volumes:
        - Naam: disk0
          containerDisk:
            Afbeelding: $CONTAINER_DISK
        - Naam: LUN0
          persistentVolumeClaim:
            claimName: $PVC_NAME
        -Naam: $VM_SA
          serviceAccount:
            serviceAccountName: $VM_SA
EOF

 

echo ""
echo "VM $VM_NAME gemaakt. Wachten tot het begint..."
echo "Watch with: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w"
echo "Console:    virtctl console -n $PVC_NAMESPACE $VM_NAME"
echo ""
echo "Opruimen:"
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.