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), Hot en 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_ZRS Standard_GRS , Standard_RAGRS , , , Standard_RAGZRS ,Premium_LRS Premium_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 0 op, 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 , , NoRootSquash RootSquash |
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.
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
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.
Maak een bestand met de naam
azure-file-pvc.yaml
en kopieer dit in de volgende YAML. Zorg ervoor dat destorageClassName
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 zijn100Gi
storage
.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:'.
Maak een bestand met de naam
azure-pvc-files.yaml
en kopieer het in de volgende YAML. Zorg ervoor dat declaimName
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
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.
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
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 deStandard_LRS
SKU. Zorg ervoor dat u de volgende tijdelijke aanduidingen vervangt:myAKSStorageAccount
met de naam van het opslagaccountnodeResourceGroupName
met de naam van de resourcegroep waarin de AKS-clusterknooppunten worden gehostlocation
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
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)
Maak de bestandsshare met behulp van de
az storage share create
opdracht. Zorg ervoor dat u de naam van uw share vervangtshareName
.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
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)
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.
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
Maak een nieuw bestand met de naam
azurefiles-pv.yaml
en kopieer deze in de volgende inhoud. Ondercsi
, bijwerkenresourceGroup
, enshareName
volumeHandle
. Voor koppelopties is de standaardwaardefileMode
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
Maak het permanente volume met behulp van de
kubectl create
opdracht.kubectl create -f azurefiles-pv.yaml
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
Maak de PersistentVolumeClaim met behulp van de
kubectl apply
opdracht.kubectl apply -f azurefiles-mount-options-pvc.yaml
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
Werk de containerspecificatie bij om te verwijzen naar uw PersistentVolumeClaim en uw pod in het YAML-bestand. Voorbeeld:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Een podspecificatie kan niet worden bijgewerkt, dus verwijder de pod met behulp van de
kubectl delete
opdracht en maak deze opnieuw met behulp van dekubectl 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.
- 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 deshareName
ensecretName
. U kunt ook hetmountPath
pad bijwerken waarin de bestandsshare is gekoppeld in de pod. Geef voor Windows Server-containers eenmountPath
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
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.
Azure Kubernetes Service