Använda CSI-diskdrivrutiner (Container Storage Interface) i AKS som aktiverats av Azure Arc
> Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server, AKS på Azure Local, version 23H2
Den här artikeln beskriver hur du använder inbyggda CSI-lagringsklasser (Container Storage Interface) för att dynamiskt skapa diskbeständiga volymer och skapa anpassade lagringsklasser i AKS som aktiveras av Arc.
Översikt över CSI i AKS aktiverat av Arc
Container Storage Interface (CSI) är en standard för att exponera godtyckliga block- och fillagringssystem för containerbaserade arbetsbelastningar på Kubernetes. Med hjälp av CSI kan AKS som aktiveras av Arc skriva, distribuera och iterera plugin-program för att exponera nya lagringssystem. Att använda CSI kan också förbättra befintliga i Kubernetes utan att behöva röra kubernetes-kärnkoden och sedan vänta på dess lanseringscykler.
Disk- och fil-CSI-drivrutinerna som används av AKS Arc är CSI-specifikationskompatibla drivrutiner.
Med stöd för CSI-lagringsdrivrutinen på AKS Arc kan du använda:
AKS Arc-diskar som du kan använda för att skapa en Kubernetes DataDisk-resurs . Dessa monteras som ReadWriteOnce, så de är bara tillgängliga för en enda podd i taget. För lagringsvolymer som kan nås av flera poddar samtidigt använder du AKS Arc-filer.
AKS Arc-filer som du kan använda för att montera en SMB- eller NFS-resurs på poddar. Dessa monteras som ReadWriteMany, så du kan dela data över flera noder och poddar. De kan också monteras som ReadWriteOnce baserat på PVC-specifikationen (beständiga volymanspråk).
Skapa beständiga diskvolymer dynamiskt med inbyggd lagringsklass
En lagringsklass används för att definiera hur en lagringsenhet skapas dynamiskt med en beständig volym. Mer information om hur du använder lagringsklasser finns i Kubernetes-lagringsklasser.
I AKS Arc skapas standardlagringsklassen som standard och använder CSI för att skapa VHDX-baserade volymer. Återtagandeprincipen säkerställer att den underliggande VHDX tas bort när den beständiga volymen som använde den tas bort. Lagringsklassen konfigurerar också beständiga volymer så att de kan expanderas. du behöver bara redigera det beständiga volymanspråket med den nya storleken.
Om du vill använda den här lagringsklassen skapar du en PVC och en respektive podd som refererar till och använder den. En PVC används för att automatiskt etablera lagring baserat på en lagringsklass. En PVC kan använda en av de förskapade lagringsklasserna eller en användardefinierad lagringsklass för att skapa en VHDX av önskad storlek. När du skapar en podddefinition anges PVC för att begära önskad lagring.
Skapa anpassad lagringsklass för diskar
Standardlagringsklassen är lämplig för de vanligaste scenarierna. Men i vissa fall kanske du vill skapa en egen lagringsklass som lagrar datorer på en viss plats som är mappad till en specifik prestandanivå.
Om du har Linux-arbetsbelastningar (poddar) måste du skapa en anpassad lagringsklass med parametern fsType: ext4
. Det här kravet gäller för Kubernetes version 1.19 och 1.20 eller senare. I följande exempel visas en anpassad definition av lagringsklassen med fsType
en definierad 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
Om du skapar en anpassad lagringsklass kan du ange den plats där du vill lagra PV:er. Om den underliggande infrastrukturen är Azure Local kan den här nya platsen vara en volym som backas upp av högpresterande SSD/NVMe eller en kostnadsoptimerad volym som backas upp av hårddiskar.
Att skapa en anpassad lagringsklass är en tvåstegsprocess:
Skapa en ny lagringssökväg med hjälp av
stack-hci-vm storagepath
cmdletarna för att skapa, visa och lista lagringssökvägarna i ditt Lokala Azure-kluster. Mer information om hur du skapar lagringssökväg finns i Lagringssökväg.För
$path
skapar du en lagringssökväg med namnet$storagepathname
, till exempel C:\ClusterStorage\test-storagepath:az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
Hämta resurs-ID:t för lagringssökvägen:
$storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv
Skapa en ny anpassad lagringsklass med hjälp av den nya lagringssökvägen.
Skapa en fil med namnet sc-aks-hci-disk-custom.yaml och kopiera sedan manifestet från följande YAML-fil. Lagringsklassen är samma som standardlagringsklassen förutom med den nya
container
. Använd den som skapadesstorage path ID
i föregående steg förcontainer
. Förgroup
ochhostname
frågar du standardlagringsklassen genom att körakubectl get storageclass default -o yaml
och sedan använda de värden som anges: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
Skapa lagringsklassen med kommandot kubectl apply och ange filen sc-aks-hci-disk-custom.yaml :
$ kubectl apply -f sc-aks-hci-disk-custom.yaml storageclass.storage.k8s.io/aks-hci-disk-custom created