Delen via


CSI-stuurprogramma (Azure Blob Storage Interface) gebruiken

Het CSI-stuurprogramma (Container Storage Interface) van Azure Blob Storage is een CSI-stuurprogramma dat voldoet aan de specificatie die wordt gebruikt door Azure Kubernetes Service (AKS) om de levenscyclus van Azure Blob Storage te beheren. De CSI is een standaard voor het beschikbaar maken van willekeurige blok- en bestandsopslagsystemen voor workloads in containers in Kubernetes.

Door CSI te gebruiken en te gebruiken, kan AKS nu invoegtoepassingen schrijven, implementeren en herhalen om nieuwe of verbeterde bestaande opslagsystemen in Kubernetes beschikbaar te maken of te verbeteren. Als u CSI-stuurprogramma's in AKS gebruikt, hoeft u de kubernetes-kerncode niet aan te raken en te wachten op de releasecycli.

Wanneer u Azure Blob Storage als bestandssysteem koppelt aan een container of pod, kunt u blobopslag gebruiken met een aantal toepassingen die enorme hoeveelheden ongestructureerde gegevens verwerken. Voorbeeld:

  • Logboekbestandsgegevens
  • Afbeeldingen, documenten en streamingvideo of audio
  • Gegevens voor herstel na noodgevallen

De gegevens in de objectopslag kunnen worden geopend door toepassingen met behulp van het Protocol BlobFuse of Network File System (NFS) 3.0. Vóór de introductie van het CSI-stuurprogramma voor Azure Blob Storage was de enige optie om handmatig een niet-ondersteund stuurprogramma te installeren voor toegang tot Blob Storage vanuit uw toepassing die wordt uitgevoerd op AKS. Wanneer het CSI-stuurprogramma voor Azure Blob Storage is ingeschakeld op AKS, zijn er twee ingebouwde opslagklassen: azureblob-fuse-premium en azureblob-nfs-premium.

Als u een AKS-cluster wilt maken met ondersteuning voor CSI-stuurprogramma's, raadpleegt u CSI-stuurprogramma's in AKS. Zie De toegang tot Azure Files, Blob Storage en Azure NetApp Files vergelijken met NFS voor meer informatie over de verschillen in toegang tussen elk van de Azure-opslagtypen met behulp van het NFS-protocol.

CSI-stuurprogrammafuncties voor Azure Blob Storage

Het CSI-stuurprogramma voor Azure Blob Storage ondersteunt de volgende functies:

  • BlobFuse- en NFS-protocol (Network File System) versie 3.0

Voordat u begint

  • Zorg ervoor dat azure CLI versie 2.42 of hoger is geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. Als u de Azure CLI-extensie aks-preview hebt geïnstalleerd, moet u ervoor zorgen dat u de extensie bijwerkt naar de nieuwste versie door aan te roepen az extension update --name aks-preview.

  • Voer de stappen in deze koppeling uit als u eerder het opensource-stuurprogramma voor CSI Blob Storage hebt geïnstalleerd voor toegang tot Azure Blob Storage vanuit uw cluster.

Notitie

Als de blobfuse-proxy niet is ingeschakeld tijdens de installatie van het opensource-stuurprogramma, zal het verwijderen van het opensource-stuurprogramma bestaande blobfuse-koppelingen verstoren. NFS-koppels blijven echter ongewijzigd.

CSI-stuurprogramma inschakelen op een nieuw of bestaand AKS-cluster

Met de Azure CLI kunt u het CSI-stuurprogramma voor Blob Storage inschakelen voor een nieuw of bestaand AKS-cluster voordat u een permanent volume configureert voor gebruik door pods in het cluster.

Als u het stuurprogramma op een nieuw cluster wilt inschakelen, neemt u de --enable-blob-driver parameter op met de az aks create opdracht, zoals wordt weergegeven in het volgende voorbeeld:

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

Als u het stuurprogramma op een bestaand cluster wilt inschakelen, neemt u de --enable-blob-driver parameter op met de az aks update opdracht, zoals wordt weergegeven in het volgende voorbeeld:

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

U wordt gevraagd te bevestigen dat er geen opensource Blob CSI-stuurprogramma is geïnstalleerd. Nadat u hebt bevestigd, kan het enkele minuten duren om deze actie te voltooien. Zodra dit is voltooid, ziet u in de uitvoer de status van het inschakelen van het stuurprogramma in uw cluster. Het volgende voorbeeld lijkt op de sectie die de resultaten van de vorige opdracht aangeeft:

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

CSI-stuurprogramma uitschakelen op een bestaand AKS-cluster

Met de Azure CLI kunt u het CSI-stuurprogramma voor Blob Storage uitschakelen op een bestaand AKS-cluster nadat u het permanente volume uit het cluster hebt verwijderd.

Als u het stuurprogramma op een bestaand cluster wilt uitschakelen, neemt u de --disable-blob-driver parameter op met de az aks update opdracht, zoals wordt weergegeven in het volgende voorbeeld:

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

Een permanent volume gebruiken met Azure Blob Storage

Een permanent volume (PV) vertegenwoordigt een stuk opslag dat is ingericht voor gebruik met Kubernetes-pods. Een HW kan worden gebruikt door een of meer pods en kan dynamisch of statisch worden ingericht. Als meerdere pods gelijktijdige toegang tot hetzelfde opslagvolume nodig hebben, kunt u Azure Blob Storage gebruiken om verbinding te maken met behulp van het Network File System (NFS) of blobfuse. In dit artikel leest u hoe u dynamisch een Azure Blob Storage-container maakt voor gebruik door meerdere pods in een AKS-cluster.

Zie Opslagopties voor toepassingen in AKS voor meer informatie over Kubernetes-volumes.

Dynamisch Azure Blob Storage-VM's maken met behulp van de ingebouwde opslagklassen

Er wordt een opslagklasse gebruikt om te definiëren hoe een Azure Blob Storage-container wordt gemaakt. Er wordt automatisch een opslagaccount gemaakt in de knooppuntresourcegroep voor gebruik met de opslagklasse voor het opslaan van de Azure Blob Storage-container. Kies een van de volgende Azure Storage-redundantie-SKU's voor skuName:

  • Standard_LRS: Lokaal redundante standaardopslag
  • Premium_LRS: Lokaal redundante Premium-opslag
  • Standard_ZRS: Standaard zone-redundante opslag
  • Premium_ZRS: Premium-zone-redundante opslag
  • Standard_GRS: Standaard geografisch redundante opslag
  • Standard_RAGRS: Geografisch redundante opslag met leestoegang

Wanneer u CSI-stuurprogramma's voor opslag in AKS gebruikt, zijn er twee extra ingebouwde StorageClasses die gebruikmaken van het Azure Blob CSI-opslagstuurprogramma.

Het claimbeleid voor beide opslagklassen zorgt ervoor dat de onderliggende Azure Blob-opslag wordt verwijderd wanneer de respectieve HW wordt verwijderd. De opslagklassen configureren ook dat de container standaard kan worden uitgebreid, omdat de set allowVolumeExpansion parameter is ingesteld op waar.

Notitie

Het verkleinen van permanente volumes wordt niet ondersteund.

Gebruik de opdracht kubectl get sc om de opslagklassen te bekijken. In het volgende voorbeeld ziet u de azureblob-fuse-premium beschikbare opslagklassen azureblob-nfs-premium in een AKS-cluster:

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

Als u deze opslagklassen wilt gebruiken, maakt u een PVC en de respectieve pod die ernaar verwijst en gebruikt. Een PVC wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. Een PVC kan een van de vooraf gemaakte opslagklassen of een door de gebruiker gedefinieerde opslagklasse gebruiken om een Azure Blob Storage-container te maken voor de gewenste SKU, grootte en protocol om ermee te communiceren. Wanneer u een poddefinitie maakt, wordt het PVC opgegeven om de gewenste opslag aan te vragen.

Een StatefulSet gebruiken

Als u een opslagvolume wilt behouden voor uw workload, kunt u een StatefulSet gebruiken. Hierdoor is het eenvoudiger om bestaande volumes te koppelen aan nieuwe pods die eventuele mislukte pods vervangen. In de volgende voorbeelden ziet u hoe u een StatefulSet instelt voor Blob Storage met behulp van Blobfuse of het NFS-protocol.

Vereisten

  • De identiteit van het AKS-clusterbesturingsvlak (dat wil gezegd uw AKS-clusternaam) wordt toegevoegd aan de rol Inzender in het VNet en de netwerkbeveiligingsgroep.
  1. Maak een bestand met de naam azure-blob-nfs-ss.yaml en kopieer dit in de volgende 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. Maak de StatefulSet met de opdracht kubectl create:

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

Volgende stappen