Udostępnij za pośrednictwem


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:

  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 lokalnym platformy Azure. 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 . 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