Udostępnij za pośrednictwem


Używanie sterownika interfejsu CSI (Container Storage Interface) usługi Azure Blob Storage

Sterownik interfejsu CSI (Container Storage Interface) usługi Azure Blob Storage to sterownik zgodny ze specyfikacją CSI używany przez usługę Azure Kubernetes Service (AKS) do zarządzania cyklem życia usługi Azure Blob Storage. CSI to standard dotyczący uwidaczniania dowolnych systemów magazynowania bloków i plików w konteneryzowanych obciążeniach na platformie Kubernetes.

Dzięki wdrożeniu i użyciu interfejsu CSI usługa AKS może teraz zapisywać, wdrażać i iterować wtyczki, aby uwidocznić nowe lub ulepszać istniejące systemy magazynowania na platformie Kubernetes. Korzystanie ze sterowników CSI w usłudze AKS pozwala uniknąć konieczności dotykania podstawowego kodu Kubernetes i oczekiwania na cykle wydania.

Podczas instalowania usługi Azure Blob Storage jako systemu plików w kontenerze lub zasobniku umożliwia korzystanie z magazynu obiektów blob z wieloma aplikacjami, które działają ogromne ilości danych bez struktury. Na przykład:

  • Dane pliku dziennika
  • Obrazy, dokumenty i przesyłanie strumieniowe wideo lub audio
  • Dane odzyskiwania po awarii

Dostęp do danych w magazynie obiektów można uzyskać za pomocą aplikacji przy użyciu protokołu BlobFuse lub Sieciowego systemu plików (NFS) 3.0. Przed wprowadzeniem sterownika CSI usługi Azure Blob Storage jedyną opcją było ręczne zainstalowanie nieobsługiwanego sterownika w celu uzyskania dostępu do usługi Blob Storage z poziomu aplikacji uruchomionej w usłudze AKS. Gdy sterownik CSI usługi Azure Blob Storage jest włączony w usłudze AKS, istnieją dwie wbudowane klasy magazynu: azureblob-fuse-premium i azureblob-nfs-premium.

Aby utworzyć klaster usługi AKS z obsługą sterowników CSI, zobacz Sterowniki CSI w usłudze AKS. Aby dowiedzieć się więcej o różnicach w dostępie między poszczególnymi typami magazynu platformy Azure przy użyciu protokołu NFS, zobacz Porównanie dostępu do usług Azure Files, Blob Storage i Azure NetApp Files z systemem plików NFS.

Funkcje sterowników CSI usługi Azure Blob Storage

Sterownik CSI usługi Azure Blob Storage obsługuje następujące funkcje:

  • Protokół BlobFuse i Network File System (NFS) w wersji 3.0

Zanim rozpoczniesz

  • Upewnij się, że masz zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.42 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. Jeśli zainstalowano rozszerzenie interfejsu wiersza polecenia aks-preview platformy Azure, pamiętaj, aby zaktualizować rozszerzenie do najnowszej wersji, wywołując polecenie az extension update --name aks-preview.

  • Wykonaj kroki podane w tym linku , jeśli wcześniej zainstalowano sterownik open source csI Blob Storage, aby uzyskać dostęp do usługi Azure Blob Storage z klastra.

Uwaga

Jeśli serwer blobfuse-proxy nie jest włączony podczas instalacji sterownika open source, odinstalowanie sterownika open source spowoduje zakłócenia istniejących instalacji blobfuse. Jednak instalacja systemu plików NFS pozostanie nienaruszona.

Włączanie sterownika CSI w nowym lub istniejącym klastrze usługi AKS

Za pomocą interfejsu wiersza polecenia platformy Azure można włączyć sterownik CSI usługi Blob Storage w nowym lub istniejącym klastrze usługi AKS przed skonfigurowaniem woluminu trwałego do użycia przez zasobniki w klastrze.

Aby włączyć sterownik w nowym klastrze, dołącz --enable-blob-driver parametr za az aks create pomocą polecenia , jak pokazano w poniższym przykładzie:

az aks create \
    --enable-blob-driver \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --generate-ssh-keys

Aby włączyć sterownik w istniejącym klastrze, dołącz --enable-blob-driver parametr za az aks update pomocą polecenia , jak pokazano w poniższym przykładzie:

az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup

Zostanie wyświetlony monit o potwierdzenie, że nie zainstalowano sterownika CSI typu open source obiektu blob. Po potwierdzeniu wykonanie tej akcji może potrwać kilka minut. Po zakończeniu w danych wyjściowych powinien zostać wyświetlony stan włączenia sterownika w klastrze. Poniższy przykład przypomina sekcję wskazującą wyniki poprzedniego polecenia:

"storageProfile": {
    "blobCsiDriver": {
      "enabled": true
    },

Wyłączanie sterownika CSI w istniejącym klastrze usługi AKS

Za pomocą interfejsu wiersza polecenia platformy Azure można wyłączyć sterownik CSI usługi Blob Storage w istniejącym klastrze usługi AKS po usunięciu woluminu trwałego z klastra.

Aby wyłączyć sterownik w istniejącym klastrze, dołącz --disable-blob-driver parametr za az aks update pomocą polecenia , jak pokazano w poniższym przykładzie:

az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup

Używanie woluminu trwałego z usługą Azure Blob Storage

Wolumin trwały (PV) reprezentuje część magazynu, która jest aprowizowana do użycia z zasobnikami Kubernetes. Pv może być używany przez jeden lub wiele zasobników i może być dynamicznie lub statycznie aprowizowany. Jeśli wiele zasobników wymaga współbieżnego dostępu do tego samego woluminu magazynu, możesz użyć usługi Azure Blob Storage do nawiązania połączenia przy użyciu systemu plików sieciowych (NFS) lub blobfuse. W tym artykule pokazano, jak dynamicznie utworzyć kontener usługi Azure Blob Storage do użycia przez wiele zasobników w klastrze usługi AKS.

Aby uzyskać więcej informacji na temat woluminów Kubernetes, zobacz Opcje magazynu dla aplikacji w usłudze AKS.

Dynamiczne tworzenie woluminów publicznych usługi Azure Blob Storage przy użyciu wbudowanych klas magazynu

Klasa magazynu służy do definiowania sposobu tworzenia kontenera usługi Azure Blob Storage. Konto magazynu jest tworzone automatycznie w grupie zasobów węzła do użycia z klasą magazynu do przechowywania kontenera usługi Azure Blob Storage. Wybierz jedną z następujących jednostek SKU nadmiarowości usługi Azure Storage dla skuName:

  • Standard_LRS: magazyn lokalnie nadmiarowy w warstwie Standardowa
  • Premium_LRS: magazyn lokalnie nadmiarowy w warstwie Premium
  • Standard_ZRS: magazyn strefowo nadmiarowy w warstwie Standardowa
  • Premium_ZRS: magazyn strefowo nadmiarowy w warstwie Premium
  • Standard_GRS: magazyn geograficznie nadmiarowy w warstwie Standardowa
  • Standard_RAGRS: magazyn geograficznie nadmiarowy z dostępem do odczytu w warstwie Standardowa

W przypadku używania sterowników CSI magazynu w usłudze AKS istnieją dwie dodatkowe wbudowane klasy StorageClasses korzystające ze sterownika magazynu Azure Blob CSI.

Zasady odzyskiwania w obu klasach magazynu zapewniają, że bazowy magazyn obiektów blob platformy Azure zostanie usunięty po usunięciu odpowiedniego pv. Klasy magazynu konfigurują również kontener, aby można go było rozszerzać domyślnie, ponieważ set allowVolumeExpansion parametr jest ustawiony na wartość true.

Użyj polecenia kubectl get sc, aby wyświetlić klasy magazynu. W poniższym przykładzie przedstawiono azureblob-fuse-premium klasy magazynu i azureblob-nfs-premium dostępne w klastrze usługi AKS:

NAME                                  PROVISIONER       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION     AGE
azureblob-fuse-premium               blob.csi.azure.com   Delete          Immediate              true                   23h
azureblob-nfs-premium                blob.csi.azure.com   Delete          Immediate              true                   23h

Aby użyć tych klas magazynowania, utwórz pvc i odpowiedni zasobnik, który odwołuje się do nich i używa ich. Element PVC służy do automatycznego aprowizowania magazynu na podstawie klasy magazynu. Pvc może użyć jednej ze wstępnie utworzonych klas magazynu lub klasy magazynu zdefiniowanej przez użytkownika, aby utworzyć kontener usługi Azure Blob Storage dla żądanej jednostki SKU, rozmiaru i protokołu do komunikowania się z nim. Podczas tworzenia definicji zasobnika zostanie określony element PVC w celu zażądania żądanego magazynu.

Używanie elementu StatefulSet

Aby zapewnić trwałość woluminu magazynu dla obciążenia, możesz użyć elementu StatefulSet. Ułatwia to dopasowanie istniejących woluminów do nowych zasobników, które zastępują wszystkie, które zakończyły się niepowodzeniem. W poniższych przykładach pokazano, jak skonfigurować zestaw stanowy dla usługi Blob Storage przy użyciu protokołu Blobfuse lub NFS.

Wymagania wstępne

  • Tożsamość płaszczyzny sterowania klastrem usługi AKS (czyli nazwa klastra usługi AKS) jest dodawana do roli Współautor w sieci wirtualnej i sieciowej grupie zabezpieczeń.
  1. Utwórz plik o nazwie azure-blob-nfs-ss.yaml i skopiuj go w następującym języku YAML.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: statefulset-blob-nfs
      labels:
        app: nginx
    spec:
      serviceName: statefulset-blob-nfs
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: statefulset-blob-nfs
              image: mcr.microsoft.com/oss/nginx/nginx:1.22
              volumeMounts:
                - name: persistent-storage
                  mountPath: /mnt/blob
      updateStrategy:
        type: RollingUpdate
      selector:
        matchLabels:
          app: nginx
      volumeClaimTemplates:
        - metadata:
            name: persistent-storage
          spec:
            storageClassName: azureblob-nfs-premium
            accessModes: ["ReadWriteMany"]
            resources:
              requests:
                storage: 100Gi
    
  2. Utwórz element StatefulSet za pomocą polecenia kubectl create:

    kubectl create -f azure-blob-nfs-ss.yaml
    

Następne kroki