Share via


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

> Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server, AKS op Azure Stack HCI 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 die worden ingeschakeld door Arc.

Overzicht van CSI in AKS ingeschakeld door Arc

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

De schijf- en bestands-CSI-stuurprogramma's die door AKS Arc worden gebruikt, zijn stuurprogramma's die voldoen aan de CSI-specificatie.

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 zijn gekoppeld als ReadWriteOnce, zodat ze slechts voor één pod tegelijk beschikbaar zijn. Gebruik AKS Arc-bestanden voor opslagvolumes die door meerdere pods tegelijk kunnen worden geopend.

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

Dynamisch permanente schijfvolumes maken met behulp van de 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 beleid voor vrijmaken zorgt ervoor dat de onderliggende VHDX wordt verwijderd wanneer het permanente volume dat het heeft gebruikt, wordt verwijderd. De opslagklasse configureert ook de permanente volumes om uitbreidbaar te zijn; u hoeft alleen de permanente volumeclaim te bewerken met de nieuwe grootte.

Als u deze opslagklasse wilt gebruiken, maakt u een PVC-bestand en een respectieve pod die ernaar verwijst en deze gebruikt. Een PVC wordt gebruikt om opslag automatisch 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 voor schijven maken

De standaardopslagklasse is geschikt voor de meest voorkomende scenario's. In sommige gevallen kunt u echter uw eigen opslagklasse maken waarin pc'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 definitie van een aangepaste opslagklasse met fsType een gedefinieerde parameter:

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 pc's wilt opslaan. Als de onderliggende infrastructuur Azure Stack HCI is, kan deze nieuwe locatie een volume zijn dat wordt ondersteund door krachtige SSDs/NVMe of een kostengeoptimeerd volume dat wordt ondersteund door HDD's.

Het maken van een aangepaste opslagklasse bestaat uit twee stappen:

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

    Voor $pathmaakt u een 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 vervolgens het manifest uit het volgende YAML-bestand. De opslagklasse is hetzelfde als de standaardopslagklasse, behalve met de nieuwe container. Gebruik de storage path ID die u in de vorige stap hebt gemaakt voor container. Voer group voor en hostnameeen query uit op de standaardopslagklasse door uit te voeren kubectl get storageclass default -o yamlen gebruik vervolgens de opgegeven waarden:

      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