Portvoktere med Red Hat OpenShift eller oppstrøms Kubernetes

Zusammenfassung: Denne kunnskapsartikkelen forklarer hvordan du bruker Red Hat GitHub kubevirt-rawio-addon-repositoriet til å presentere PowerMax-portvoktere til enten et Red Hat OpenShift- eller oppstrøms Kubernetes-miljø. ...

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-portvoktere

PowerMax-portvokterne er små enheter (vanligvis tre MB) som er skåret ut fra disker i PowerMax, og som fungerer som SCSI-mål for Solutions Enabler-kommandoer. Konfigurasjons- og statusinformasjon opprettholdes i en PowerMax-vertsdatabasefil symapi_db.bin som standard. Den er kjent som konfigurasjonsdatabasen for PowerMax. Det reduserer antall henvendelser fra verten til lagringsarrayene. Gatekeepers må være rå enheter slik at operativsystemet bare passerer SCSI-kommandoene uten manipulering. Mens fysiske verter alltid arbeider med portvoktere (med et støttet operativsystem), er virtuelle verter begrenset til VMware ved hjelp av fysiske råenhetstilordninger (RDM-er), iSCSI for gjest på Windows eller Linux, gjeste-NVMe/TCP på Linux eller gjennomgangsenheter (NIC eller HBA). Bare VMware kan imidlertid presentere en ekte rå enhet som er anerkjent som en levedyktig portvakt. Andre virtualiseringsløsninger lar brukeren presentere enheter som "rå", men løsningene deres blokkerer noen SCSI-kommandoer, og forhindrer bruk som portvakter. Solutions Enabler merker dem som portvoktere, men rapporterer en feil som nedenfor.

Videre, hvis du undersøker portvokterne, viser de en tilstand av "CLS" eller lukket.

Derfor kan du ikke sende de nødvendige SCSI-kommandoene.

For å dra nytte av denne løsningen må du bruke en protokoll som Solutions Enabler støtter på det valgte operativsystemet. Se produktdokumentasjonen.

Red Hat GitHub-løsning

Dell ba Red Hat om hjelp til å utvikle en midlertidig løsning for portvoktere i et OpenShift-miljø for noen av våre felles kunder. For å oppnå dette opprettet de en løsning som fungerer for både OpenShift og Upstream Kubernetes med små variasjoner i implementeringen. GitHub-depotet kalles kubevirt-rawio-addon som ligger her: https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub inkluderer en readme-https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md.

Tillegget installerer flere komponenter:

  • Mutere webhooks for å endre objekter på farten
  • Validering av webhook – en OpenShift-spesifikk sikkerhetskontroll
  • Sikkerhetskonfigurasjon for å tillate privilegerte funksjoner
  • Sidevogn krok 

Sidevognen er en liten ekstra beholder som kjører ved siden av VM-kapselen og modifiserer VM-ens konfigurasjon på lavt nivå før den starter. Den avskjærer den KubeVirt-genererte VM-konfigurasjonen, finner de kommenterte diskene og setter rawio = yes. KubeVirt får deretter tilbake XML. Den underliggende libvirt/QEMU-arkitekturen støtter dette, men eksponerer det ikke, så denne mindre justeringen er nødvendig. Det er mulig at KubeVirt avslører dette i fremtiden, da løsningen vil være unødvendig.


  

Implementering på OpenShift

Repositoriet inneholder alle instruksjonene for implementering av denne løsningen. Fordi Red Hat eier løsningen, anbefaler Dell å følge de gjeldende instruksjonene som kan endres i fremtiden.  Dell vil ikke oppdatere KB for å gjenspeile disse endringene. Som en tjeneste gir vi den grunnleggende informasjonen nedenfor, men oppfordrer brukere av denne kunnskapsartikkelen til å bruke dem sammen med repositoriet.

Som nevnt kan du implementere dette på OpenShift eller Upstream Kubernetes. Som trinnene er for OpenShift, er det et par ting å merke seg hvis du gjør oppstrøms Kubernetes.

  • Hvis du implementerer på vanilje K8s, må du ha cert-manager installert. Hvis PowerMax CSI-driveren er installert, er dette til stede.
  • Hvis du implementerer på vanilje K8s, trenger du et privilegert navneområde. Du kan bruke navneområdet i skriptene eller lage dine egne og deretter endre skriptene.

De to skriptene du trenger for implementering er i hack-mappen . rawio-setup.sh er det første skriptet og er det samme for begge plattformene, men vær oppmerksom på at det er avhengig av openshift-cnv-navneområdet som bare finnes på OpenShift. Legg til navneområdet eller opprett et nytt og endre skriptet for K8-ere. VM-opprettingsskriptet er unikt for plattformen, men bruker igjen openshift-cnv-navneområdet. For OpenShift er det rawio-create-vm-openshift.sh. Skriptene er utformet for å opprette et testmiljø og må endres for et produksjonsoppsett. Spesielt oppretter rawio-setup.sh-skriptet en virtuell SCSI-enhet. I stedet endrer du skriptet for å bruke lagringsklassen PowerMax. I tillegg forutsetter skriptet én enkelt node for planlegging av den virtuelle maskinen. Endre den slik at den kan kjøre på en hvilken som helst arbeidsnode. Skriptet bruker en pre-buit Fedora OS.

Eksempelskript er i tilleggsinnhold.

Grunnleggende trinn

Vær oppmerksom på at PowerMax CSI ikke kan opprette en enhet som er mindre enn 50 MB, selv om du ber om en tradisjonell portvakt på 3 MB. Det forårsaker ikke et problem.

Andre virtualiseringsløsninger

Ingen av løsningene nedenfor fungerer med dette Red Hat-depotet.

  • K8s-baserte løsninger som SUSE Harvester - SUSE må utvikle sin egen løsning
  • KVM-løsninger som Proxmox eller Oracle KVM (oVirt) - disse er ikke KubeVirt-baserte og kan ikke brukes



 

Weitere Informationen

rawio-setup.sh

 

#!/bin/bash

 

sett -euo pipefail

 

hvis [ -z "${KUBEVIRT_NAMESPACE:-}" ]; Deretter
  Hvis kubectl får ns openshift-cnv &>/dev/null; da
    NAMESPACE="openshift-cnv"
  Annet
    NAMESPACE="kubevirt"
  Fi
Annet
  NAMESPACE="$KUBEVIRT_NAMESPACE"
Fi

 

PVC_NAMESPACE="${PVC_NAMESPACE:-default}"
SC_NAME="powermax-2164-default"
PVC_NAME="SCSI-rawio-PVC"

 

# Opprett navnerom hvis det ikke finnes
kubectl get ns "$PVC_NAMESPACE" >/dev/null 2>&1 || kubectl create ns "$PVC_NAMESPACE"

 

# Lag PVC
ekko "Opprette PVC $PVC_NAME i navnerommet $PVC_NAMESPACE ..."

 

kubectl apply -f - <<EOF
apiVersion: v1
Type: PersistentVolumeClaim
Metadata:
  navn: $PVC_NAVN
  Navneområdet: $PVC_NAMESPACE
Spec:
  storageClassName: $SC_NAME
  volummodus: Blokk
  accessModes:
    - LesWriteOnce
  Ressurser:
    Forespørsler:
      Lagring: 8Mi
EOF

 

ekko ""
ekko "=== Oppsettet er fullført ==="
echo "StorageClass:   $SC_NAME"
ekko "PVC:            $PVC_NAVNEOMRÅDE/$PVC_NAVN"
ekko ""
 

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

rawio-create-vm-openshift.sh

 

#!/bin/bash

 

sett -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 "Opprette ServiceAccount $VM_SA i navneområdet $PVC_NAMESPACE"

 

kubectl apply -f - <<EOF
apiVersion: v1
Type: ServiceAccount
Metadata:
  navn: $VM_SA
  Navneområdet: $PVC_NAMESPACE
EOF

 

echo "Opprette SCC $SCC_NAME for servicekonto $VM_SA"

 

kubectl apply -f - <<EOF
apiVersion: security.openshift.io/v1
Type: SecurityContextConstraints
Metadata:
  navn: $SCC_NAVN
Prioritet: 11
allowPrivilegedContainer: false
allowHostDirVolumePlugin: true
allowHostNetwork: false
allowHostPorts: false
allowHostPID: falsk
allowHostIPC: false
allowedCapabilities:
  - NET_BIND_SERVICE
  - SYS_NICE
  - SYS_RAWIO
  - SETFCAP
defaultAddCapabilities: []
seccompProfiles:
  - Kjøretid/standard
  - Uinnsperret
  - localhost/kubevirt/kubevirt.json
Volumer:
  - "*"
readOnlyRootFilesystem: false
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
fsGroup:
  type: RunAsAny
supplementalGroups:
  type: RunAsAny
Brukere:
  - System:ServiceAccount:${PVC_NAMESPACE}:${VM_SA}
Grupper: []
EOF

 

echo "Opprette VM $VM_NAME i navnerommet $PVC_NAMESPACE"
ekko "PVC:               $PVC_NAME"
echo "ServiceAccount:    $VM_SA"
echo "Container disk:    $CONTAINER_DISK"

 

kubectl apply -f - <<EOF
apiVersion: kubevirt.io/v1
Type: VirtualMachine
Metadata:
  navn: $VM_NAVN
  Navneområdet: $PVC_NAMESPACE
  Merknader:
    kubevirt.io/rawioSupport: "Lun0"
Spec:
  kjører: sant
  Mal:
    Metadata:
      Merknader:
        kubevirt.io/rawioSupport: "Lun0"
    Spec:
      Domene:
        Cpu:
          Kjerner: 2
        Ressurser:
          Forespørsler:
            Minne: 2Gi
        Enheter:
          Rng: {}
          Disker:
            - Navn: Disk0
              Disk:
                Buss: Virtio
            - Navn: Lun0
              Lun:
                Buss: SCSI
            -navn: $VM_SA
              Disk:
                Buss: Virtio
      Volumer:
        - Navn: Disk0
          containerDisk:
            Bildet: $CONTAINER_DISK
        - Navn: Lun0
          persistentVolumeClaim:
            claimName: $PVC_NAVN
        -navn: $VM_SA
          serviceAccount:
            serviceAccountName: $VM_SA
EOF

 

ekko ""
echo "VM $VM_NAME opprettet. Venter på at den skal starte...»
echo "Se med: kubectl get vmi -n $PVC_NAMESPACE $VM_NAME -w"
ekko "Konsoll:    virtctl console -n $PVC_NAMESPACE $VM_NAME"
ekko ""
ekko "Opprydding:"
echo " kubectl delete vm -n $PVC_NAMESPACE $VM_NAME"
echo " kubectl slett 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.