Używanie sterowników dysków interfejsu magazynu kontenerów (CSI) w usłudze AKS włączonej przez usługę Azure Arc
> Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server, usługa AKS w usłudze Azure Local, wersja 23H2
W tym artykule opisano sposób używania wbudowanych klas magazynu interfejsu magazynu kontenerów (CSI) w celu dynamicznego tworzenia woluminów trwałych dysków i tworzenia niestandardowych klas magazynu w usłudze AKS włączonej przez usługę Arc.
Omówienie interfejsu CSI w usłudze AKS włączonego przez usługę Arc
Interfejs Container Storage Interface (CSI) jest standardem umożliwiającym uwidacznianie dowolnych systemów magazynów blokowych i magazynów plików konteneryzowanym obciążeniom na platformie Kubernetes. Dzięki użyciu interfejsu CSI usługa AKS włączona przez usługę Arc może zapisywać, wdrażać i iterować wtyczki w celu uwidocznienia nowych systemów magazynowania. Użycie interfejsu CSI może również poprawić istniejące w rozwiązaniu Kubernetes bez konieczności dotykania podstawowego kodu Kubernetes, a następnie czekania na cykle wydania.
Sterowniki CSI dysku i pliku używane przez usługę AKS Arc to sterowniki zgodne ze specyfikacją CSI.
Obsługa sterowników magazynu CSI w usłudze AKS Arc umożliwia korzystanie z następujących funkcji:
Dyski usługi AKS Arc, których można użyć do utworzenia zasobu Kubernetes DataDisk . Są one instalowane jako ReadWriteOnce, więc są dostępne tylko dla jednego zasobnika naraz. W przypadku woluminów magazynu, do których można uzyskiwać dostęp jednocześnie przez wiele zasobników, użyj plików usługi AKS Arc.
Pliki usługi AKS Arc, których można użyć do zainstalowania udziału SMB lub NFS w zasobnikach. Są one instalowane jako ReadWriteMany, dzięki czemu można udostępniać dane między wieloma węzłami i zasobnikami. Można je również zamontować jako ReadWriteOnce na podstawie specyfikacji PCV (oświadczenia trwałego woluminu).
Dynamiczne tworzenie woluminów trwałych dysku przy użyciu wbudowanej klasy magazynu
Klasa magazynu służy do definiowania sposobu dynamicznego tworzenia jednostki magazynu przy użyciu woluminu trwałego. Aby uzyskać więcej informacji na temat używania klas magazynu, zobacz Klasy magazynu Kubernetes.
W usłudze AKS Arc domyślna klasa magazynu jest tworzona domyślnie i używa interfejsu CSI do tworzenia woluminów opartych na dysku VHDX. Zasady odzyskiwania zapewniają usunięcie bazowego dysku VHDX po usunięciu trwałego woluminu, który go użył. Klasa magazynu konfiguruje również woluminy trwałe, aby można je było rozszerzać; wystarczy edytować trwałe oświadczenie woluminu o nowym rozmiarze.
Aby korzystać z tej klasy magazynu, utwórz pvc i odpowiedni zasobnik, który odwołuje się i używa go. Element PVC służy do automatycznego aprowizowania magazynu na podstawie klasy magazynu. W celu utworzenia dysku VHDX o żądanym rozmiarze można użyć jednej ze wstępnie utworzonych klas magazynu lub klasy magazynu zdefiniowanej przez użytkownika. Podczas tworzenia definicji zasobnika zostanie określony element PVC w celu zażądania żądanego magazynu.
Tworzenie niestandardowej klasy magazynu dla dysków
Domyślna klasa magazynu jest odpowiednia dla najbardziej typowych scenariuszy. Jednak w niektórych przypadkach możesz utworzyć własną klasę magazynu, która przechowuje telewizory w określonej lokalizacji zamapowanej na określoną warstwę wydajności.
Jeśli masz obciążenia systemu Linux (zasobniki), musisz utworzyć niestandardową klasę magazynu z parametrem fsType: ext4
. To wymaganie dotyczy platformy Kubernetes w wersji 1.19 i 1.20 lub nowszej. W poniższym przykładzie przedstawiono niestandardową definicję klasy magazynu ze zdefiniowanym parametrem fsType
:
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
Jeśli tworzysz niestandardową klasę magazynu, możesz określić lokalizację, w której chcesz przechowywać telewizory. Jeśli podstawowa infrastruktura jest lokalna platformy Azure, ta nowa lokalizacja może być woluminem wspieranym przez dyski SSD/NVMe o wysokiej wydajności lub wolumin zoptymalizowany pod kątem kosztów wspierany przez dyski HDD.
Tworzenie niestandardowej klasy magazynu jest procesem dwuetapowym:
Utwórz nową ścieżkę magazynu przy użyciu
stack-hci-vm storagepath
poleceń cmdlet do tworzenia, wyświetlania i wyświetlania ścieżek magazynu w klastrze lokalnym platformy Azure. Aby uzyskać więcej informacji na temat tworzenia ścieżki magazynu, zobacz ścieżka magazynu.W przypadku
$path
programu utwórz ścieżkę magazynu o nazwie$storagepathname
; na przykład C:\ClusterStorage\test-storagepath:az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
Pobierz identyfikator zasobu ścieżki magazynu:
$storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv
Utwórz nową niestandardową klasę magazynu przy użyciu nowej ścieżki magazynu.
Utwórz plik o nazwie sc-aks-hci-disk-custom.yaml, a następnie skopiuj manifest z następującego pliku YAML. Klasa magazynu jest taka sama jak domyślna klasa magazynu, z wyjątkiem nowej
container
klasy . Użyj elementustorage path ID
utworzonego w poprzednim kroku dla elementucontainer
. W przypadkugroup
elementów ihostname
wykonaj zapytanie dotyczące domyślnej klasy magazynu, uruchamiająckubectl get storageclass default -o yaml
polecenie , a następnie użyj określonych wartości: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
Utwórz klasę magazynu za pomocą polecenia kubectl apply i określ plik sc-aks-hci-disk-custom.yaml :
$ kubectl apply -f sc-aks-hci-disk-custom.yaml storageclass.storage.k8s.io/aks-hci-disk-custom created