Używanie sterowników dysków interfejsu CONTAINER Storage Interface (CSI) w usłudze AKS włączonej przez usługę Azure Arc

> Dotyczy: AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server, AKS w usłudze Azure Stack HCI 23H2

W tym artykule opisano sposób używania wbudowanych klas magazynu interfejsu magazynu kontenera (CSI) do 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 magazynu kontenerów (CSI) jest standardem umożliwiającym uwidacznianie dowolnych systemów magazynowania bloków i plików w konteneryzowanych obciążeniach 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 oczekiwania na cykle wydania.

Sterowniki CSI dysku i pliku używane przez usługę AKS Arc są sterownikami zgodnymi 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 trwałego woluminu. 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, które mają być rozszerzalne; Wystarczy edytować oświadczenie trwałego woluminu o nowym rozmiarze.

Aby wykorzystać tę klasę magazynu, utwórz element PVC i odpowiedni zasobnik, który odwołuje się do niego i używa go. Element PVC jest używany do automatycznej aprowizacji magazynu na podstawie klasy magazynu. PCV może użyć jednej ze wstępnie utworzonych klas magazynu lub zdefiniowanej przez użytkownika klasy magazynu, aby utworzyć dysk VHDX o żądanym rozmiarze. Podczas tworzenia definicji zasobnika element PVC jest określony 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 to Azure Stack HCI, ta nowa lokalizacja może być woluminem wspieranym przez dyski SSD/NVMe o wysokiej wydajności lub zoptymalizowany pod kątem kosztów wolumin wspierany przez dyski HDD.

Tworzenie niestandardowej klasy magazynu jest procesem dwuetapowym:

  1. 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 azure Stack HCI. Aby uzyskać więcej informacji na temat tworzenia ścieżki magazynu, zobacz ścieżka magazynu.

    W przypadku $pathprogramu 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 
    
  2. Utwórz nową niestandardową klasę magazynu przy użyciu nowej ścieżki magazynu.

    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 magazynu . Użyj elementu storage path ID utworzonego w poprzednim kroku dla elementu container. W przypadku group elementów i hostnamewykonaj zapytanie dotyczące domyślnej klasy magazynu, uruchamiając kubectl get storageclass default -o yamlpolecenie , 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
      
    2. 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
      

Następne kroki