Używanie usługi AKS na Azure Stack HCI sterowników interfejsu CSI (Container Storage Interface)

Sterowniki usługi AKS na Azure Stack HCI i pliku Container Storage Interface (CSI) są sterownikami zgodnymi ze specyfikacją CSIużywanymi przez usługę AKS na platformie Azure Stack HCI.

CSI to standard uwidniania dowolnych systemów magazynu blokowego i plików na konteneryzowanych obciążeniach na platformie Kubernetes. Wdrażając i używając csi, usługę AKS na platformie Azure Stack HCI można pisać, wdrażać i iterować wtyczki w celu uwidoczniania nowych systemów magazynowania lub ulepszania istniejących systemów na platformie Kubernetes bez konieczności dotykania podstawowego kodu Kubernetes i oczekiwania na cykle wydań.

Obsługa sterownika magazynu CSI w u Azure Stack HCI AKS umożliwia korzystanie z:

  • AKS na Azure Stack HCI, 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 na raz. W przypadku woluminów magazynu, do których można uzyskać dostęp jednocześnie przez wiele zasobników, użyj usługi AKS Azure Stack HCI plików.

  • AKS na Azure Stack HCI plików, których można użyć do instalacji 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ż zainstalowane jako ReadWriteOnce na podstawie specyfikacji STRONIE.

Dynamiczne tworzenie woluminów trwałych dysku przy użyciu wbudowanej klasy magazynu

Klasa magazynu służy do definiowania dynamicznego tworzenia jednostki magazynu za pomocą trwałego woluminu. Aby uzyskać więcej informacji na temat używania klas magazynu, zobacz Kubernetes storage classes (Klasy magazynu Kubernetes).

W umacie Azure Stack HCI AKS klasa magazynu jest tworzona domyślnie i używa woluminów CSV do tworzenia woluminów utworzonych w default formacie VHDX. Zasady odzyskiwania zapewniają, że źródłowy dysk VHDX zostanie usunięty po usunięciu trwałego woluminu, który go użył. Klasa magazynu konfiguruje również trwałe woluminy tak, aby można je było rozszerzać, więc wystarczy edytować oświadczenie woluminu trwałego z nowym rozmiarem.

Aby korzystać z tej klasy magazynu, należy utworzyć klasę AND I odpowiedni zasobnik, który odwołuje się do nich i z nich korzysta. System PLIKÓW JEST używany do automatycznego aprowizować magazyn na podstawie klasy magazynu. Aby utworzyć plik VHDX o żądanym rozmiarze, można użyć jednej ze wstępnie utworzonych klas magazynu lub zdefiniowanej przez użytkownika klasy magazynu. Podczas tworzenia definicji zasobnika jest określana wartość w celu zażądania odpowiedniego magazynu.

Tworzenie niestandardowej klasy magazynu dla usługi AKS na Azure Stack HCI magazynu

Domyślna klasa magazynu jest odpowiednia dla większości typowych scenariuszy. Jednak w niektórych przypadkach można utworzyć własną klasę magazynu, która przechowuje komputery w określonej lokalizacji zamapowanych na określoną warstwę wydajności.

Jeśli masz obciążenia systemu Linux (zasobniki), musisz utworzyć niestandardową klasę magazynu z parametrem fsType: ext4 . Dotyczy to systemu Kubernetes w wersji 1.19 i 1.20 lub nowszej. W poniższym przykładzie pokazano niestandardową definicję klasy magazynu ze fsType zdefiniowanym parametrem:

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  

Domyślna klasa magazynu przechowuje komputery w lokalizacji -imageDir określonej podczas wdrażania hosta usługi AKS. Jeśli tworzysz niestandardową klasę magazynu, możesz określić lokalizację, w której chcesz przechowywać pliki PVs. Jeśli podstawowa infrastruktura jest Azure Stack HCI, ta nowa lokalizacja może być woluminem, który jest zapasowy przez dyski SSD/NVMe o wysokiej wydajności lub zoptymalizowany pod kątem kosztów wolumin z dyskami HDD.

Tworzenie niestandardowej klasy magazynu jest procesem dwuetapowym:

  1. Utwórz nowy kontener magazynu przy użyciu następującego polecenia programu PowerShell New-AksHciStorageContainer:

    New-AksHciStorageContainer -Name <e.g. customStorageContainer> -Path <shared storage path>
    

    Sprawdź, czy nowy kontener magazynu został utworzony, uruchamiając następujące polecenie get-AksHciStorageContainer programu PowerShell:

     Get-AksHciStorageContainer -Name "customStorageContainer"
    
  2. Utwórz nową niestandardową klasę magazynu przy użyciu nowego kontenera magazynu.

    1. W tym celu utwórz plik o nazwie , a następnie skopiuj sc-aks-hci-disk-custom.yaml manifest z poniższego pliku YAML. Klasa magazynu jest taka sama jak domyślna klasa magazynu z wyjątkiem nowej klasy container . W group przypadku klas i hostname odpytują domyślną klasę magazynu, uruchamiając plik , a następnie kubectl get storageclass default -o yaml 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: customStorageContainer
           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:

       $ 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 interfejsu Storage Container