Delen via


CSI-schijfstuurprogramma's (Container Storage Interface) gebruiken in AKS ingeschakeld door Azure Arc

> van toepassing op: AKS op Azure Local 22H2, AKS op Windows Server, AKS op Azure Local, versie 23H2

In dit artikel wordt beschreven hoe u ingebouwde CSI-opslagklassen (Container Storage Interface) gebruikt om dynamisch permanente schijfvolumes te maken en aangepaste opslagklassen te maken in AKS waarvoor Arc is ingeschakeld.

Overzicht van CSI in AKS ingeschakeld door Arc

De Container Storage Interface (CSI), een standaard voor het beschikbaar maken van willekeurige blok- en opslagsystemen in workloads in containers op Kubernetes. Met behulp van CSI kan AKS die door Arc is ingeschakeld, invoegtoepassingen schrijven, implementeren en herhalen om nieuwe opslagsystemen beschikbaar te maken. Het gebruik van CSI kan ook bestaande kubernetes verbeteren zonder dat u de kubernetes-kerncode hoeft aan te raken en vervolgens te wachten op de releasecycli.

De schijf- en bestand-CSI-stuurprogramma's die door AKS Arc worden gebruikt, zijn stuurprogramma's die compatibel zijn met CSI-specificaties.

Met de ondersteuning voor CSI-opslagstuurprogramma's in AKS Arc kunt u het volgende gebruiken:

  • AKS Arc-schijven die u kunt gebruiken om een Kubernetes DataDisk-resource te maken. Deze worden gekoppeld als ReadWriteOnce, dus ze zijn alleen beschikbaar voor één pod tegelijk. Gebruik AKS Arc-bestanden voor opslagvolumes die tegelijkertijd door meerdere pods kunnen worden geopend.

  • AKS Arc-bestanden die u kunt gebruiken om een SMB- of NFS-share te koppelen aan pods. Deze worden gekoppeld als ReadWriteMany, zodat u gegevens kunt delen over meerdere knooppunten en pods. Ze kunnen ook worden gekoppeld als ReadWriteOnce op basis van de PVC-specificatie (permanente volumeclaim).

Dynamisch permanente schijfvolumes maken met behulp van ingebouwde opslagklasse

Een opslagklasse wordt gebruikt om te definiëren hoe een opslageenheid dynamisch wordt gemaakt met een permanent volume. Zie Kubernetes-opslagklassen voor meer informatie over het gebruik van opslagklassen.

In AKS Arc wordt de standaardopslagklasse standaard gemaakt en wordt CSI gebruikt om volumes met VHDX-ondersteuning te maken. Het claimbeleid zorgt ervoor dat de onderliggende VHDX wordt verwijderd wanneer het permanente volume dat het gebruikte volume wordt verwijderd. De opslagklasse configureert ook de permanente volumes om uit te breiden; u hoeft alleen de permanente volumeclaim te bewerken met de nieuwe grootte.

Als u deze opslagklasse wilt gebruiken, maakt u een PVC en een respectieve pod die ernaar verwijst en gebruikt. Een PVC wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. Een PVC kan een van de vooraf gemaakte opslagklassen of een door de gebruiker gedefinieerde opslagklasse gebruiken om een VHDX van de gewenste grootte te maken. Wanneer u een poddefinitie maakt, wordt het PVC opgegeven om de gewenste opslag aan te vragen.

Aangepaste opslagklasse maken voor schijven

De standaardopslagklasse is geschikt voor de meest voorkomende scenario's. In sommige gevallen wilt u echter mogelijk uw eigen opslagklasse maken waarin tv's worden opgeslagen op een bepaalde locatie die is toegewezen aan een specifieke prestatielaag.

Als u Linux-workloads (pods) hebt, moet u een aangepaste opslagklasse maken met de parameter fsType: ext4. Deze vereiste is van toepassing op Kubernetes-versies 1.19 en 1.20 of hoger. In het volgende voorbeeld ziet u een aangepaste definitie van de opslagklasse waarin fsType de parameter is gedefinieerd:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aks-hci-disk-custom
parameters:
  blocksize: "33554432"
  container: SqlStorageContainer
  dynamic: "true"
  group: clustergroup-summertime
  hostname: TESTPATCHING-91.sys-sqlsvr.local
  logicalsectorsize: "4096"
  physicalsectorsize: "4096"
  port: "55000"
  fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true  

Als u een aangepaste opslagklasse maakt, kunt u de locatie opgeven waar u tv's wilt opslaan. Als de onderliggende infrastructuur Azure Local is, kan deze nieuwe locatie een volume zijn dat wordt ondersteund door krachtige HDD's/NVMe's of een door kosten geoptimaliseerd volume dat wordt ondersteund door HDD's.

Het maken van een aangepaste opslagklasse is een proces in twee stappen:

  1. Maak een nieuw opslagpad met behulp van de stack-hci-vm storagepath cmdlets om de opslagpaden in uw lokale Azure-cluster te maken, weer te geven en weer te geven. Zie het opslagpad voor meer informatie over het maken van opslagpaden.

    Maak $patheen opslagpad met de naam $storagepathname; bijvoorbeeld C:\ClusterStorage\test-storagepath:

    az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
    

    Haal de resource-id van het opslagpad op:

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. Maak een nieuwe aangepaste opslagklasse met behulp van het nieuwe opslagpad.

    1. Maak een bestand met de naam sc-aks-hci-disk-custom.yaml en kopieer het manifest uit het volgende YAML-bestand. De opslagklasse is hetzelfde als de standaardopslagklasse, behalve met de nieuwe container. Gebruik de storage path ID gemaakte in de vorige stap voor container. Voer group een query uit voor de hostnamestandaardopslagklasse en kubectl get storageclass default -o yamlgebruik vervolgens de waarden die zijn opgegeven:

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
       name: aks-hci-disk-custom
      provisioner: disk.csi.akshci.com
      parameters:
       blocksize: "33554432"
       container: <storage path ID>
       dynamic: "true"
       group: <e.g clustergroup-akshci> # same as the default storageclass
       hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass
       logicalsectorsize: "4096"
       physicalsectorsize: "4096"
       port: "55000"
       fsType: ext4 # refer to the note above to determine when to include this parameter
      allowVolumeExpansion: true
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      
    2. Maak de opslagklasse met de opdracht kubectl apply en geef het bestand sc-aks-hci-disk-custom.yaml op:

       $ kubectl apply -f sc-aks-hci-disk-custom.yaml
       storageclass.storage.k8s.io/aks-hci-disk-custom created
      

Volgende stappen