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:
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
$path
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
Maak een nieuwe aangepaste opslagklasse met behulp van het nieuwe opslagpad.
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 destorage path ID
gemaakte in de vorige stap voorcontainer
. Voergroup
een query uit voor dehostname
standaardopslagklasse enkubectl get storageclass default -o yaml
gebruik 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
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