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-extensieaks-preview
hebt geïnstalleerd, moet u ervoor zorgen dat u de extensie bijwerkt naar de nieuwste versie door aan te roepenaz 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.
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
Maak de StatefulSet met de opdracht kubectl create:
kubectl create -f azure-blob-nfs-ss.yaml
Volgende stappen
- Zie Een volume maken en gebruiken met Azure Blob Storage voor meer informatie over het instellen van een statisch of dynamisch permanent volume.
- Zie Azure Disks gebruiken met een CSI-stuurprogramma voor meer informatie over het gebruik van het CSI-stuurprogramma voor Azure Disks
- Zie Azure Files gebruiken met CSI-stuurprogramma voor CSI voor meer informatie over het gebruik van het CSI-stuurprogramma voor Azure Files
- Zie Best practices voor opslag en back-ups in Azure Kubernetes Service voor meer informatie over aanbevolen procedures voor opslag.
Azure Kubernetes Service