Udostępnij przez


Używanie sterowników dysków interfejsu magazynu kontenerów (CSI) w usłudze AKS obsługiwanej przez usługę Azure Arc

Dotyczy: AKS w usłudze Azure Local

W tym artykule opisano sposób używania klas magazynu wbudowanych w interfejs magazynu kontenerów (CSI) do dynamicznego tworzenia trwałych woluminów dysków oraz tworzenia niestandardowych klas magazynu w usłudze AKS obsługiwanej przez Arc.

Omówienie interfejsu CSI w usłudze AKS z obsł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 udostępnienia nowych systemów magazynowania. CSI może również poprawić istniejące rozwiązania w Kubernetes bez konieczności modyfikacji podstawowego kodu Kubernetes i oczekiwania na cykle wydań.

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 AKS Arc files.

  • Pliki usługi AKS Arc, których można użyć do zamontowania udziału SMB lub NFS w podach. Są one instalowane jako ReadWriteMany, dzięki czemu można udostępniać dane między wieloma węzłami i podami. 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 używa interfejsu CSI do tworzenia woluminów opartych na dyskach typu VHDX. Polityka odzyskiwania zapewnia usunięcie bazowego dysku VHDX po usunięciu woluminu trwałego, który z niego korzystał. Klasa magazynu konfiguruje również woluminy trwałe, aby można je było rozszerzać; wystarczy edytować żądanie woluminu trwałego, określając nowy rozmiar.

Aby użyć tej klasy magazynu, utwórz żądanie trwałego woluminu (PVC) i odpowiedni pod, który z niego korzysta. PVC służy do automatycznego przydzielania przestrzeni dyskowej na podstawie klasy przestrzeni dyskowej. PVC może wykorzystać jedną z wstępnie utworzonych klas magazynu lub klasę magazynu zdefiniowaną przez użytkownika do utworzenia dysku VHDX o żądanym rozmiarze. 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ę pamięci masowej 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 składowania z ustawionym 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ć trwałe wolumeny. 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:

  1. Utwórz nową ścieżkę magazynu przy użyciu poleceń stack-hci-vm storagepath cmdlet do tworzenia, wyświetlania i listowania ścieżek magazynu w lokalnym klastrze Azure. Aby uzyskać więcej informacji na temat tworzenia ścieżki do przechowywania, zobacz ścieżka do przechowywania.

    W przypadku $path utwórz ścieżkę magazynowania 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 przechowywania

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. Utwórz nową niestandardową klasę pamięci przy użyciu nowej ścieżki pamięciowej.

    1. 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 containerklasy . Użyj elementu storage path ID utworzonego w poprzednim kroku dla elementu container. W przypadku group i hostname wykonaj zapytanie dotyczące domyślnej klasy magazynu, uruchamiając kubectl get storageclass default -o yaml, a następnie użyj podanych 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
      
    2. Utwórz klasę magazynu za pomocą polecenia kubectl apply, określając 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
      

Następne kroki

Używanie sterowników dla plików interfejsu systemu magazynowania kontenerów