Delen via


Een volume maken en gebruiken met Azure Files in Azure Kubernetes Service (AKS)

Een permanent volume vertegenwoordigt een stukje opslag dat is ingericht voor gebruik met Kubernetes-pods. U kunt een permanent volume met een of veel pods gebruiken en het kan dynamisch of statisch worden ingericht. Als meerdere pods gelijktijdige toegang tot hetzelfde opslagvolume nodig hebben, kunt u Azure Files gebruiken om verbinding te maken met behulp van het SMB-protocol (Server Message Block). In dit artikel leest u hoe u dynamisch een Azure-bestandsshare maakt voor gebruik door meerdere pods in een AKS-cluster (Azure Kubernetes Service).

Dit artikel laat het volgende zien:

  • Werk met een dynamisch permanent volume (PV) door het CSI-stuurprogramma (Container Storage Interface) te installeren en dynamisch een of meer Azure-bestandsshares te maken die aan een pod moeten worden gekoppeld.
  • Werk met een statische HW door een of meer Azure-bestandsshares te maken of gebruik een bestaande bestandsshare en koppel deze aan een pod.

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

Voordat u begint

  • U hebt een Azure-opslagaccount nodig.
  • Zorg ervoor dat Azure CLI versie 2.0.59 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.
  • Wanneer u kiest tussen standard- en Premium-bestandsshares, is het belangrijk dat u het inrichtingsmodel en de vereisten begrijpt van het verwachte gebruikspatroon dat u wilt uitvoeren in Azure Files. Zie Een Azure Files-prestatielaag kiezen op basis van gebruikspatronen voor meer informatie.

Een volume dynamisch inrichten

Deze sectie bevat richtlijnen voor clusterbeheerders die een of meer permanente volumes willen inrichten met details van een of meer shares in Azure Files. Een permanente volumeclaim (PVC) maakt gebruik van het opslagklasseobject om een Azure Files-bestandsshare dynamisch in te richten.

Parameters van opslagklasse voor dynamische PersistentVolumes

De volgende tabel bevat parameters die u kunt gebruiken om een aangepaste opslagklasse te definiëren voor uw PersistentVolumeClaim.

Naam Betekenis Beschikbare waarde Verplicht Default value
accountAccessTier Toegangslaag voor opslagaccount Standaardaccount kan kiezen Hot of Cool, en Premium-account kan alleen kiezen Premium. Nee Leeg. Gebruik de standaardinstelling voor verschillende typen opslagaccounts.
accountQuota Hiermee beperkt u het quotum voor een account. U kunt een maximumquotum opgeven in GB (standaard 102400 GB). Als het account het opgegeven quotum overschrijdt, slaat het stuurprogramma het selecteren van het account over. Nee 102400
allowBlobPublicAccess Openbare toegang tot alle blobs of containers toestaan of toestaan voor het opslagaccount dat door het stuurprogramma is gemaakt. true of false Nee false
disableDeleteRetentionPolicy Geef op of DeleteRetentionPolicy moet worden uitgeschakeld voor het opslagaccount dat is gemaakt door het stuurprogramma. true of false Nee false
enableLargeFileShares Geef op of u een opslagaccount wilt gebruiken waarvoor grote bestandsshares zijn ingeschakeld of niet. Als deze vlag is ingesteld op true en een opslagaccount waarvoor grote bestandsshares zijn ingeschakeld, bestaat er geen nieuw opslagaccount waarvoor grote bestandsshares zijn ingeschakeld. Deze vlag moet worden gebruikt met de Standard-sKU omdat de opslagaccounts die zijn gemaakt met Premium-sKU standaard zijn largeFileShares ingeschakeld. true of false Nee false
folderName Geef de mapnaam op in de Azure-bestandsshare. Bestaande mapnaam in Azure-bestandsshare. Nee Als de mapnaam niet bestaat in de bestandsshare, mislukt de koppeling.
getLatestAccount Hiermee bepaalt u of u de meest recente accountsleutel wilt ophalen op basis van de aanmaaktijd. Dit stuurprogramma krijgt standaard de eerste sleutel. true of false Nee false
locatie Geef de Azure-regio van het Azure-opslagaccount op. Bijvoorbeeld: eastus. Nee Als het stuurprogramma leeg is, gebruikt het stuurprogramma dezelfde locatienaam als het huidige AKS-cluster.
matchTags Koppel tags wanneer het stuurprogramma probeert een geschikt opslagaccount te vinden. true of false Nee false
networkEndpointType Geef het type netwerkeindpunt op voor het opslagaccount dat door het stuurprogramma is gemaakt. Als privateEndpoint dit is opgegeven, wordt er een privé-eindpunt gemaakt voor het opslagaccount. In andere gevallen wordt standaard een service-eindpunt gemaakt. "",privateEndpoint Nee ""
protocol Geef het protocol voor bestandsshares op. smb, nfs Nee smb
requireInfraEncryption Geef op of de service een secundaire versleutelingslaag toepast met door het platform beheerde sleutels voor data-at-rest voor het opslagaccount dat door het stuurprogramma is gemaakt. true of false Nee false
resourceGroup Geef de resourcegroep voor de Azure-schijven op. Naam van bestaande resourcegroep Nee Als dit leeg is, gebruikt het stuurprogramma dezelfde resourcegroepnaam als het huidige AKS-cluster.
selectRandomMatchingAccount Bepaalt of een overeenkomend account willekeurig moet worden geselecteerd. Standaard selecteert het stuurprogramma altijd het eerste overeenkomende account in alfabetische volgorde (Opmerking: dit stuurprogramma maakt gebruik van de zoekcache voor accounts, wat resulteert in ongelijke verdeling van het maken van bestanden in meerdere accounts). true of false Nee false
server Geef het serveradres van het Azure-opslagaccount op. Bestaand serveradres, bijvoorbeeld accountname.privatelink.file.core.windows.net. Nee Als het stuurprogramma leeg is, gebruikt het stuurprogramma het standaardadres accountname.file.core.windows.net of een ander soevereine cloudaccountadres.
shareAccessTier Toegangslaag voor bestandsshare Account voor algemeen gebruik v2 kan kiezen tussen TransactionOptimized (standaard), Hoten Cool. Premium-opslagaccounttype alleen voor bestandsshares. Nee Leeg. Gebruik de standaardinstelling voor verschillende typen opslagaccounts.
shareName Geef de naam van de Azure-bestandsshare op. Naam van bestaande of nieuwe Azure-bestandsshare. Nee Als dit leeg is, genereert het stuurprogramma een Azure-bestandssharenaam.
shareNamePrefix Geef het voorvoegsel voor de naam van de Azure-bestandsshare op dat door het stuurprogramma is gemaakt. De naam van de share mag alleen kleine letters, cijfers, afbreekstreepjes en lengte bevatten, mag uit minder dan 21 tekens bestaan. Nee
skuName Azure Files-opslagaccounttype (alias: storageAccountType) Standard_LRS, , Standard_ZRSStandard_GRS, Standard_RAGRS, , , Standard_RAGZRS,Premium_LRSPremium_ZRS Nee StandardSSD_LRS
De minimale bestandsgrootte voor het Premium-accounttype is 100 GB.
Het ZRS-accounttype wordt ondersteund in beperkte regio's.
NFS-bestandsshare ondersteunt alleen het Premium-accounttype.
storageAccount Geef een Azure Storage-accountnaam op. storageAccountName -Nee Wanneer er geen specifieke opslagaccountnaam is opgegeven, zoekt het stuurprogramma naar een geschikt opslagaccount dat overeenkomt met de accountinstellingen binnen dezelfde resourcegroep. Als er geen overeenkomend opslagaccount wordt gevonden, wordt er een nieuw opslagaccount gemaakt. Als er echter een naam voor een opslagaccount is opgegeven, moet het opslagaccount al bestaan.
storageEndpointSuffix Geef het achtervoegsel van het Azure-opslageindpunt op. core.windows.net, enz core.chinacloudapi.cn. Nee Als het stuurprogramma leeg is, wordt het standaardachtervoegsel voor het opslageindpunt gebruikt volgens de cloudomgeving. Bijvoorbeeld: core.windows.net.
tags Tags worden gemaakt in een nieuw opslagaccount. Labelindeling: 'foo=aaa,bar=bbb' Nee ""
--- De volgende parameters zijn alleen voor het SMB-protocol --- ---
subscriptionID Geef de Azure-abonnements-id op waarin de Azure-bestandsshare wordt gemaakt. Azure-abonnements-id Nee Indien niet leeg, resourceGroup moet worden opgegeven.
storeAccountKey Geef op of de accountsleutel moet worden opgeslagen in een Kubernetes-geheim. true of false
false betekent dat het stuurprogramma kubelet-identiteit gebruikt om accountsleutel op te halen.
Nee true
secretName Geef de geheime naam op om de accountsleutel op te slaan. Nee
secretNamespace Geef de naamruimte van het geheim op om de accountsleutel op te slaan.

Opmerking:
Als secretNamespace dit niet is opgegeven, wordt het geheim gemaakt in dezelfde naamruimte als de pod.
default,kube-system, enz. Nee PVC-naamruimte, bijvoorbeeld csi.storage.k8s.io/pvc/namespace
useDataPlaneAPI Geef op of de GEGEVENSVLAK-API moet worden gebruikt voor het maken/verwijderen/verkleinen van bestandsshares, waardoor het probleem met de beperking van de SRP-API kan worden opgelost omdat de gegevensvlak-API bijna geen limiet heeft, terwijl deze mislukt wanneer er firewall- of Vnet-instellingen in het opslagaccount zijn. true of false Nee false
--- De volgende parameters zijn alleen voor het NFS-protocol --- ---
mountPermissions Machtigingen voor gekoppelde mappen. De standaardwaarde is 0777. Als dit is ingesteld 0op, wordt het stuurprogramma niet uitgevoerd chmod na het koppelen 0777 Nee
rootSquashType Geef het gedrag van root-squashing op voor de share. De standaardwaarde is NoRootSquash AllSquash, , NoRootSquashRootSquash Nee
--- De volgende parameters zijn alleen bedoeld voor de VNet-instelling. Bijvoorbeeld NFS, privé-eindpunt --- ---
fsGroupChangePolicy Geeft aan hoe het stuurprogramma het eigendom van het volume wijzigt. Pod securityContext.fsGroupChangePolicy wordt genegeerd. OnRootMismatch (standaard), Always, None Nee OnRootMismatch
subnetName Subnetnaam Bestaande subnetnaam van het agentknooppunt. Nee Als het stuurprogramma leeg is, wordt de waarde gebruikt in het configuratiebestand van de subnetName Azure-cloud.
vnetName Naam van virtueel netwerk Naam van bestaand virtueel netwerk. Nee Als het stuurprogramma leeg is, wordt de waarde gebruikt in het configuratiebestand van de vnetName Azure-cloud.
vnetResourceGroup Geef de VNet-resourcegroep op waarin het virtuele netwerk is gedefinieerd. Naam van bestaande resourcegroep. Nee Als het stuurprogramma leeg is, wordt de waarde gebruikt in het configuratiebestand van de vnetResourceGroup Azure-cloud.

Een opslagklasse maken

In opslagklassen wordt gedefinieerd hoe u een Azure-bestandsshare maakt. Er wordt automatisch een opslagaccount gemaakt in de knooppuntresourcegroep voor gebruik met de opslagklasse voor het opslaan van de Azure Files-bestandsshare. Kies voor de volgende Azure Storage-redundantie-SKU'sskuName:

  • Standard_LRS: Standaard lokaal redundante opslag (LRS)
  • Standard_GRS: Standaard geografisch redundante opslag (GRS)
  • Standard_ZRS: Standaard zone-redundante opslag (ZRS)
  • Standard_RAGRS: Standaard geografisch redundante opslag met leestoegang (RA-GRS)
  • Premium_LRS: Lokaal redundante Premium-opslag (LRS)
  • Premium_ZRS: Premium zone redundante opslag (ZRS)

Notitie

De minimale Premium-bestandsshare is 100 GB.

Zie Kubernetes Storage-klassen voor meer informatie over Kubernetes-opslagklassen voor Azure Files.

  1. Maak een bestand met de naam azure-file-sc.yaml en kopieer dit in het volgende voorbeeldmanifest. Zie de sectie Koppelingsopties voor meer informatiemountOptions.

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: my-azurefile
    provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
    allowVolumeExpansion: true
    mountOptions:
     - dir_mode=0777
     - file_mode=0777
     - uid=0
     - gid=0
     - mfsymlinks
     - cache=strict
     - actimeo=30
     - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    parameters:
      skuName: Premium_LRS
    
  2. Maak de opslagklasse met behulp van de kubectl apply opdracht.

    kubectl apply -f azure-file-sc.yaml
    

Een permanente volumeclaim maken

Een permanente volumeclaim (PVC) maakt gebruik van het opslagklasseobject om een Azure-bestandsshare dynamisch in te richten. U kunt de volgende YAML gebruiken om een permanente volumeclaim van 100 GB te maken met ReadWriteMany-toegang . Zie Kubernetes permanent volume voor meer informatie over toegangsmodi.

  1. Maak een bestand met de naam azure-file-pvc.yaml en kopieer dit in de volgende YAML. Zorg ervoor dat de storageClassName opslagklasse overeenkomt met de opslagklasse die u in de vorige stap hebt gemaakt.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: my-azurefile
      resources:
        requests:
          storage: 100Gi
    

    Notitie

    Als u de Premium_LRS SKU voor uw opslagklasse gebruikt, moet de minimumwaarde zijn100Gistorage.

  2. Maak de permanente volumeclaim met behulp van de kubectl apply opdracht.

    kubectl apply -f azure-file-pvc.yaml
    

    Zodra de bestandsshare is voltooid, wordt de bestandsshare gemaakt. Er wordt ook een Kubernetes-geheim gemaakt dat verbindingsgegevens en referenties bevat. U kunt de kubectl get opdracht gebruiken om de status van het PVC weer te geven:

    kubectl get pvc my-azurefile
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    NAME           STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
    my-azurefile   Bound     pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477   100Gi       RWX            my-azurefile      5m
    

Het permanente volume gebruiken

De volgende YAML maakt een pod die gebruikmaakt van het permanente volume claim my-azurefile om de Azure Files-bestandsshare te koppelen aan het /mnt/azure-pad . Geef voor Windows Server-containers een mountPath gebruik van de Windows-padconventie op, zoals 'D:'.

  1. Maak een bestand met de naam azure-pvc-files.yamlen kopieer het in de volgende YAML. Zorg ervoor dat de claimName pvc die u in de vorige stap hebt gemaakt, overeenkomt met het PVC dat u in de vorige stap hebt gemaakt.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: mypod
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          volumeMounts:
            - mountPath: /mnt/azure
              name: volume
              readOnly: false
      volumes:
       - name: volume
         persistentVolumeClaim:
           claimName: my-azurefile
    
  2. Maak de pod met behulp van de kubectl apply opdracht.

    kubectl apply -f azure-pvc-files.yaml
    

    U hebt nu een actieve pod met uw Azure Files-bestandsshare die is gekoppeld aan de map /mnt/azure . Deze configuratie kan worden weergegeven bij het inspecteren van uw pod met behulp van de kubectl describe opdracht. In de volgende verkorte voorbeelduitvoer ziet u het volume dat in de container is gekoppeld.

    Containers:
      mypod:
        Container ID:   docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e
        Image:          mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        Image ID:       docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
        State:          Running
          Started:      Fri, 01 Mar 2019 23:56:16 +0000
        Ready:          True
        Mounts:
          /mnt/azure from volume (rw)
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro)
    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  my-azurefile
        ReadOnly:   false
    [...]
    

Koppelingsopties

De standaardwaarde voor fileMode en dirMode is 0777 voor Kubernetes-versies 1.13.0 en hoger. Als u het permanente volume dynamisch maakt met een opslagklasse, kunt u koppelopties opgeven voor het opslagklasseobject. Zie Koppelingsopties voor meer informatie. In het volgende voorbeeld wordt 0777 ingesteld:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
  - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
  skuName: Premium_LRS

Azure-tags gebruiken

Zie Azure-tags gebruiken in Azure Kubernetes Service (AKS) voor meer informatie over het gebruik van Azure-tags.

Statisch een volume inrichten

Deze sectie bevat richtlijnen voor clusterbeheerders die een of meer permanente volumes willen maken die details bevatten van een bestaande Azure Files-share voor gebruik met een workload.

Statische inrichtingsparameters voor PersistentVolume

De volgende tabel bevat parameters die u kunt gebruiken om een PersistentVolume te definiëren.

Naam Betekenis Beschikbare waarde Verplicht Default value
volumeAttributes.resourceGroup Geef een Azure-resourcegroepnaam op. myResourceGroup Nee Als dit leeg is, gebruikt het stuurprogramma dezelfde resourcegroepnaam als het huidige cluster.
volumeAttributes.storageAccount Geef een bestaande azure-opslagaccountnaam op. storageAccountName Ja
volumeAttributes.shareName Geef een Azure-bestandssharenaam op. fileShareName Ja
volumeAttributes.folderName Geef een mapnaam op in de Azure-bestandsshare. folderName Nee Als de mapnaam niet in de bestandsshare bestaat, mislukt de koppeling.
volumeAttributes.protocol Geef het protocol voor bestandsshares op. smb, nfs Nee smb
volumeAttributes.server Serveradres voor Azure-opslagaccount opgeven Bestaand serveradres, bijvoorbeeld accountname.privatelink.file.core.windows.net. Nee Als het stuurprogramma leeg is, gebruikt het stuurprogramma het standaardadres accountname.file.core.windows.net of een ander soevereine cloudaccountadres.
--- De volgende parameters zijn alleen voor het SMB-protocol --- --- ---
volumeAttributes.secretName Geef een geheime naam op waarin de naam en sleutel van het opslagaccount worden opgeslagen. Nee
volumeAttributes.secretNamespace Geef een geheime naamruimte op. default,kube-system, enz. Nee PVC-naamruimte (csi.storage.k8s.io/pvc/namespace)
nodeStageSecretRef.name Geef een geheime naam op waarin de naam en sleutel van het opslagaccount worden opgeslagen. Bestaande geheime naam. Nee Als het stuurprogramma leeg is, gebruikt het stuurprogramma kubelet-identiteit om de accountsleutel op te halen.
nodeStageSecretRef.namespace Geef een geheime naamruimte op. Kubernetes-naamruimte Nee
--- De volgende parameters zijn alleen voor het NFS-protocol --- --- ---
volumeAttributes.fsGroupChangePolicy Geeft aan hoe het stuurprogramma het eigendom van een volume wijzigt. Pod securityContext.fsGroupChangePolicy wordt genegeerd. OnRootMismatch (standaard), Always, None Nee OnRootMismatch
volumeAttributes.mountPermissions Geef gekoppelde mapmachtigingen op. De standaardwaarde is 0777 Nee

Een Azure-bestandsshare maken

Voordat u een Azure Files-bestandsshare als Kubernetes-volume kunt gebruiken, moet u een Azure Storage-account en de bestandsshare maken.

  1. Haal de naam van de resourcegroep op met behulp van de az aks show opdracht met de --query nodeResourceGroup parameter.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Maak een opslagaccount met behulp van de az storage account create opdracht met de --sku parameter. Met de volgende opdracht maakt u een opslagaccount met behulp van de Standard_LRS SKU. Zorg ervoor dat u de volgende tijdelijke aanduidingen vervangt:

    • myAKSStorageAccount met de naam van het opslagaccount
    • nodeResourceGroupName met de naam van de resourcegroep waarin de AKS-clusterknooppunten worden gehost
    • location met de naam van de regio waarin u de resource wilt maken. Dit moet dezelfde regio zijn als de AKS-clusterknooppunten.
    az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
    
  3. Exporteer de verbindingsreeks als een omgevingsvariabele met behulp van de volgende opdracht, die u gebruikt om de bestandsshare te maken.

    export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
    
  4. Maak de bestandsshare met behulp van de az storage share create opdracht. Zorg ervoor dat u de naam van uw share vervangt shareName .

    az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
    
  5. Exporteer de sleutel van het opslagaccount als een omgevingsvariabele met behulp van de volgende opdracht.

    STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
    
  6. Echo de naam en sleutel van het opslagaccount met behulp van de volgende opdracht. Kopieer deze informatie, omdat u deze waarden nodig hebt bij het maken van het Kubernetes-volume.

    echo Storage account key: $STORAGE_KEY
    

Een Kubernetes-geheim maken

Kubernetes heeft referenties nodig voor toegang tot de bestandsshare die in de vorige stap is gemaakt. Deze referenties worden opgeslagen in een Kubernetes-geheim, waarnaar wordt verwezen wanneer u een Kubernetes-pod maakt.

  1. Maak het geheim met behulp van de kubectl create secret opdracht. In het volgende voorbeeld wordt een geheim gemaakt met de naam azure-secret en wordt de azurestorageaccountname en azurestorageaccountkey uit de vorige stap ingevuld. Als u een bestaand Azure-opslagaccount wilt gebruiken, geeft u de accountnaam en -sleutel op.

    kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
    

Bestandsshare koppelen als permanent volume

  1. Maak een nieuw bestand met de naam azurefiles-pv.yaml en kopieer deze in de volgende inhoud. Onder csi, bijwerken resourceGroup, en shareNamevolumeHandle. Voor koppelopties is de standaardwaarde fileMode dirMode 0777.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: file.csi.azure.com
      name: azurefile
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: azurefile-csi
      csi:
        driver: file.csi.azure.com
        volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}"  # make sure this volumeid is unique for every identical share in the cluster
        volumeAttributes:
          resourceGroup: resourceGroupName  # optional, only set this when storage account is not in the same resource group as node
          shareName: aksshare
        nodeStageSecretRef:
          name: azure-secret
          namespace: default
      mountOptions:
        - dir_mode=0777
        - file_mode=0777
        - uid=0
        - gid=0
        - mfsymlinks
        - cache=strict
        - nosharesock
        - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    
  2. Maak het permanente volume met behulp van de kubectl create opdracht.

    kubectl create -f azurefiles-pv.yaml
    
  3. Maak een nieuw bestand met de naam azurefiles-mount-options-pvc.yaml en kopieer de volgende inhoud.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: azurefile-csi
      volumeName: azurefile
      resources:
        requests:
          storage: 5Gi
    
  4. Maak de PersistentVolumeClaim met behulp van de kubectl apply opdracht.

    kubectl apply -f azurefiles-mount-options-pvc.yaml
    
  5. Controleer of uw PersistentVolumeClaim is gemaakt en gebonden aan het PersistentVolume met behulp van de kubectl get opdracht.

    kubectl get pvc azurefile
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    azurefile   Bound    azurefile   5Gi        RWX            azurefile      5s
    
  6. Werk de containerspecificatie bij om te verwijzen naar uw PersistentVolumeClaim en uw pod in het YAML-bestand. Voorbeeld:

    ...
      volumes:
      - name: azure
        persistentVolumeClaim:
          claimName: azurefile
    
  7. Een podspecificatie kan niet worden bijgewerkt, dus verwijder de pod met behulp van de kubectl delete opdracht en maak deze opnieuw met behulp van de kubectl apply opdracht.

    kubectl delete pod mypod
    
    kubectl apply -f azure-files-pod.yaml
    

Bestandsshare koppelen als een inlinevolume

Notitie

Om prestatieproblemen te voorkomen, raden we u aan een permanent volume te gebruiken in plaats van een inline volume wanneer meerdere pods toegang hebben tot dezelfde bestandsshare. Inlinevolume heeft alleen toegang tot geheimen in dezelfde naamruimte als de pod. Als u een andere geheime naamruimte wilt opgeven, gebruikt u een permanent volume.

Als u de Azure Files-bestandsshare wilt koppelen aan uw pod, configureert u het volume in de containerspecificatie.

  1. Maak een nieuw bestand met de naam azure-files-pod.yaml en kopieer deze in de volgende inhoud. Als u de naam van de bestandsshare of geheime naam hebt gewijzigd, werkt u de shareName en secretName. U kunt ook het mountPathpad bijwerken waarin de bestandsshare is gekoppeld in de pod. Geef voor Windows Server-containers een mountPath gebruik van de Windows-padconventie op, zoals 'D:'.
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  nodeSelector:
    kubernetes.io/os: linux
  containers:
    - image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine'
      name: mypod
      resources:
        requests:
          cpu: 100m
          memory: 128Mi
        limits:
          cpu: 250m
          memory: 256Mi
      volumeMounts:
        - name: azure
          mountPath: /mnt/azure
          readOnly: false
  volumes:
    - name: azure
      csi:
        driver: file.csi.azure.com
        volumeAttributes:
          secretName: azure-secret  # required
          shareName: aksshare  # required
          mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl'  # optional
  1. Maak de pod met behulp van de kubectl apply opdracht.

    kubectl apply -f azure-files-pod.yaml
    

    U hebt nu een actieve pod met een Azure Files-bestandsshare die is gekoppeld aan /mnt/azure. U kunt controleren of de share is gekoppeld met behulp van de kubectl describe opdracht.

    kubectl describe pod mypod
    

Volgende stappen

Zie CSI-stuurprogrammaparameters voor Azure Files CSI-stuurprogramma's.

Zie Best practices voor opslag en back-ups in AKS voor de bijbehorende aanbevolen procedures.