Creare e usare un volume con File di Azure nel servizio Azure Kubernetes
Un volume permanente rappresenta una parte di risorsa di archiviazione di cui è stato eseguito il provisioning per l'uso con pod Kubernetes. È possibile usare un volume permanente con uno o più pod ed è possibile eseguirne il provisioning in modo dinamico o statico. Se più pod necessitano di accesso simultaneo allo stesso volume di archiviazione, è possibile usare File di Azure per connettersi usando il protocollo Server Message Block (SMB). Questo articolo illustra come creare in modo dinamico una condivisione di file di Azure per l'uso da più POD in un cluster del servizio Azure Kubernetes.
Questo articolo illustra come:
- Usare un volume permanente dinamico installando il driver CSI (Container Storage Interface) e creando dinamicamente una o più condivisioni di file di Azure da collegare a un pod.
- Usare un PV statico creando una o più condivisioni file di Azure oppure usando un file esistente e collegarlo a un pod.
Per altre informazioni sui volumi Kubernetes, vedere Opzioni di archiviazione per le applicazioni nel servizio Azure Kubernetes.
Operazioni preliminari
- È necessario aggiungere un account di archiviazione di Azure.
- Assicurarsi che sia installata e configurata l'interfaccia della riga di comando di Azure versione 2.0.59 o successiva. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - Quando si sceglie tra condivisioni file standard e Premium, è importante comprendere il modello di provisioning e i requisiti del modello di utilizzo previsto che si prevede di eseguire in File di Azure. Per altre informazioni, vedere Scelta di un livello di prestazioni di File di Azure in base ai modelli di utilizzo.
Effettuare il provisioning dinamico di un volume
Questa sezione fornisce indicazioni per gli amministratori dei cluster che vogliono effettuare il provisioning di uno o più volumi permanenti che includono i dettagli di una o più condivisioni in File di Azure. Un'attestazione di volume permanente usa l'oggetto classe di archiviazione per effettuare il provisioning dinamico di una condivisione file di File di Azure.
Parametri della classe di archiviazione per PersistentVolumes dinamici
La tabella seguente mostra i parametri utilizzabili per definire una classe di archiviazione personalizzata per PersistentVolumeClaim.
Nome | Significato | Valore disponibile | Obbligatorio | Default value |
---|---|---|---|---|
accountAccessTier | Livello di accesso per l'account di archiviazione | L'account Standard può scegliere Hot o Cool , e l'account Premium può scegliere solo Premium . |
No | Vuoto. Usare l'impostazione predefinita per diversi tipi di account di archiviazione. |
accountQuota | Limita la quota per un account. È possibile specificare una quota massima in GB (102400 GB per impostazione predefinita). Se l'account supera la quota specificata, il driver ignora la selezione dell'account. | No | 102400 |
|
allowBlobPublicAccess | Permette di consentire o impedire l'accesso pubblico a tutti i BLOB o contenitori per l'account di archiviazione creato dal driver. | true oppure false |
No | false |
disableDeleteRetentionPolicy | Specificare se disabilitare DeleteRetentionPolicy per l'account di archiviazione creato dal driver. | true oppure false |
No | false |
enableLargeFileShares | Specificare se usare un account di archiviazione con condivisioni file di grandi dimensioni abilitate o meno. Se questo flag è impostato su true e non esiste un account di archiviazione con condivisioni di file di grandi dimensioni abilitate, viene creato un nuovo account di archiviazione con condivisioni di file di grandi dimensioni abilitate. Questo flag deve essere usato con lo SKU Standard perché gli account di archiviazione creati con sku Premium hanno l'opzione largeFileShares abilitata per impostazione predefinita. |
true oppure false |
No | false |
folderName | Specificare il nome della cartella nella condivisione file di Azure. | Nome cartella esistente nella condivisione file di Azure. | No | Se il nome della cartella non esiste nella condivisione file, il montaggio non riesce. |
getLatestAccount | Determina se ottenere la chiave dell'account più recente in base all'ora di creazione. Questo driver ottiene la prima chiave per impostazione predefinita. | true oppure false |
No | false |
posizione | Specificare l'area di Azure dell'account di archiviazione di Azure. | Ad esempio, eastus . |
No | Se vuoto, il driver usa lo stesso nome della posizione del cluster del servizio Azure Kubernetes corrente. |
matchTags | Trova tag di corrispondenza quando il driver prova a trovare un account di archiviazione appropriato. | true oppure false |
No | false |
networkEndpointType | Consente di specificare il tipo di endpoint di rete per l'account di archiviazione creato dal driver. Se viene specificato privateEndpoint , viene creato un endpoint privato per l'account di archiviazione. Per altri casi, viene creato un endpoint di servizio per impostazione predefinita. |
"",privateEndpoint |
No | "" |
protocollo | Specificare il protocollo di condivisione file. | smb , nfs |
No | smb |
requireInfraEncryption | Specificare se il servizio applica o meno un livello secondario di crittografia con chiavi gestite dalla piattaforma per i dati inattivi per l'account di archiviazione creato dal driver. | true oppure false |
No | false |
resourceGroup | Specificare il gruppo di risorse per i dischi di Azure. | Nome del gruppo di risorse esistente | No | Se vuoto, il driver usa lo stesso nome del gruppo di risorse del cluster del servizio Azure Kubernetes corrente. |
selectRandomMatchingAccount | Determina se selezionare in modo casuale un account corrispondente. Per impostazione predefinita, il driver seleziona sempre il primo account corrispondente in ordine alfabetico (nota: questo driver usa la cache di ricerca dell'account, che comporta una distribuzione non uniforme della creazione di file tra più account). | true oppure false |
No | false |
server | Specificare l'indirizzo del server dell'account di archiviazione di Azure. | Indirizzo del server esistente, ad esempio accountname.privatelink.file.core.windows.net . |
No | Se vuoto, il driver usa l'indirizzo predefinito accountname.file.core.windows.net o un altro account cloud sovrano. |
shareAccessTier | Livello di accesso per la condivisione file | L'account per utilizzo generico v2 può scegliere tra TransactionOptimized (impostazione predefinita), Hot e Cool . Tipo di account di archiviazione Premium solo per le condivisioni file. |
No | Vuoto. Usare l'impostazione predefinita per diversi tipi di account di archiviazione. |
shareName | Specificare il nome della condivisione file di Azure. | Nome esistente o nuovo della condivisione file di Azure. | No | Se vuoto, il driver genera un nome di condivisione file di Azure. |
shareNamePrefix | Specificare il prefisso del nome della condivisione file di Azure creato dal driver. | Il nome della condivisione può contenere solo lettere minuscole, numeri, trattini e lunghezza inferiori a 21 caratteri. | No | |
skuName | Tipo di account di archiviazione file di Azure (alias: storageAccountType ) |
Standard_LRS , Standard_ZRS , Standard_GRS , Standard_RAGRS , Standard_RAGZRS ,Premium_LRS , Premium_ZRS |
No | StandardSSD_LRS Le dimensioni minime della condivisione file per il tipo di account Premium sono 100 GB. Il tipo di account con ridondanza della zona è supportato in aree limitate. La condivisione file NFS supporta solo il tipo di account Premium. |
storageAccount | Specificare un nome di account di archiviazione di Azure. | storageAccountName | - No | Quando non viene indicato un nome di account di archiviazione specifico, il driver cercherà un account di archiviazione appropriato che corrisponda alle impostazioni dell'account all'interno dello stesso gruppo di risorse. Se non riesce a trovare un account di archiviazione corrispondente, ne creerà uno nuovo. Tuttavia, se viene specificato un nome di account di archiviazione, l'account di archiviazione deve esistere già. |
storageEndpointSuffix | Consente di specificare il suffisso dell'endpoint di archiviazione di Azure. | core.windows.net , core.chinacloudapi.cn , etc. |
No | Se vuoto, il driver usa il suffisso dell'endpoint di archiviazione predefinito in base all'ambiente cloud. Ad esempio, core.windows.net . |
tag | I tag vengono creati in un nuovo account di archiviazione. | Formato tag: 'foo=aaa,bar=bbb' | No | "" |
--- | I parametri seguenti sono solo per il protocollo SMB | --- | --- | |
subscriptionid | Specificare l'ID di sottoscrizione di Azure in cui viene creata la condivisione file di Azure. | ID sottoscrizione di Azure | No | Se non è vuoto, resourceGroup deve essere specificato. |
storeAccountKey | Specificare se archiviare la chiave dell'account nel segreto Kubernetes. | true oppure false false significa che il driver usa l'identità kubelet per ottenere la chiave dell'account. |
No | true |
secretName | Consente di specificare il nome del segreto per archiviare la chiave dell'account. | No | ||
secretNamespace | Consente di specificare lo spazio dei nomi del segreto per archiviare la chiave dell'account. Nota: Se secretNamespace non viene specificato, il segreto viene creato nello stesso spazio dei nomi del pod. |
default ,kube-system , e così via. |
No | Spazio dei nomi PVC, ad esempio csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Specificare se usare API del piano dati per la creazione/eliminazione/ridimensionamento della condivisione file, che potrebbe risolvere il problema di limitazione dell'API SRP perché l'API del piano dati non ha quasi alcun limite, mentre si verifica un errore quando sono presenti impostazioni del firewall o della rete virtuale nell'account di archiviazione. | true oppure false |
No | false |
--- | I parametri seguenti sono solo per il protocollo NFS | --- | --- | |
mountPermissions | Autorizzazioni per le cartelle montate. Il valore predefinito è 0777 . Se impostato su 0 , il driver non esegue chmod dopo il montaggio |
0777 |
No | |
rootSquashType | Specificare il comportamento di squash radice nella condivisione. Il valore predefinito è NoRootSquash |
AllSquash , NoRootSquash , RootSquash |
No | |
--- | I parametri seguenti sono solo per l'impostazione della rete virtuale. Ad esempio, NFS, punto finale privato | --- | --- | |
fsGroupChangePolicy | Indica il modo in cui il driver modifica la proprietà del volume. Il pod securityContext.fsGroupChangePolicy viene ignorato. |
OnRootMismatch (impostazione predefinita), Always , None |
No | OnRootMismatch |
subnetName | Nome subnet | Nome della subnet esistente del nodo dell'agente. | No | Se vuoto, il driver usa il valore subnetName nel file di configurazione cloud di Azure. |
vnetName | Nome della rete virtuale | Rete virtuale esistente: | No | Se vuoto, il driver usa il valore vnetName nel file di configurazione cloud di Azure. |
vnetResourceGroup | Specificare il gruppo di risorse della rete virtuale in cui è definita la rete virtuale. | Nome del gruppo di risorse esistente. | No | Se vuoto, il driver usa il valore vnetResourceGroup nel file di configurazione cloud di Azure. |
Creare una classe di archiviazione
Le classi di archiviazione definiscono come creare una condivisione file di Azure. Nel gruppo di risorse nodo viene creato automaticamente un account di archiviazione da usare insieme alla classe di archiviazione per contenere la condivisione file di File di Azure. Scegliere gli SKU di ridondanza di Archiviazione di Azure seguenti per skuName
:
Standard_LRS
: archiviazione con ridondanza locale StandardStandard_GRS
: archiviazione con ridondanza geografica standardStandard_ZRS
: archiviazione con ridondanza della zona standardStandard_RAGRS
: archiviazione con ridondanza geografica e accesso in lettura standard (RA-GRS)Premium_LRS
: archiviazione con ridondanza locale PremiumPremium_ZRS
: archiviazione con ridondanza della zona Premium (ZRS)
Nota
La condivisione file Premium minima è di 100 GB.
Per altre informazioni sulle classi di archiviazione Kubernetes per File di Azure, vedere l'articolo sulle classi di archiviazione di Kubernetes.
Creare un file denominato
azure-file-sc.yaml
e copiarlo nell'esempio di manifesto seguente. Per altre informazioni sumountOptions
, vedere la sezione opzioni di montaggio.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
Creare la classe di archiviazione usando il comando
kubectl apply
.kubectl apply -f azure-file-sc.yaml
Creare un'attestazione di volume permanente
Un'attestazione di volume permanente usa l'oggetto classe di archiviazione per effettuare il provisioning dinamico di una condivisione file di Azure. È possibile usare il codice YAML seguente per creare un'attestazione di volume permanente 100 GB in dimensioni con accesso ReadWriteMany. Per altre informazioni sulle modalità di accesso, vedere volume permanente Kubernetes.
Creare un file denominato
azure-file-pvc.yaml
e copiarlo nel codice YAML seguente. Assicurarsi chestorageClassName
corrisponda alla classe di archiviazione creata nel passaggio precedente.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Nota
Se si usa lo SKU
Premium_LRS
per la classe di archiviazione, il valore minimo perstorage
deve essere100Gi
.Creare l'attestazione di volume permanente usando il comando
kubectl apply
.kubectl apply -f azure-file-pvc.yaml
Al termine, viene creata la condivisione file. Viene creato anche un segreto Kubernetes che comprende le credenziali e le informazioni di connessione. È possibile usare il comando
kubectl get
per visualizzare lo stato dell'attestazione di volume permanente:kubectl get pvc my-azurefile
L'output del comando è simile all'esempio seguente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Usare il volume permanente
Il codice YAML seguente crea un pod che usa l'attestazione di volume permanente my-azurefile per montare la condivisione file di File di Azure nel percorso /mnt/azure. Per i contenitori di Windows Server, specificare un mountPath
usando la convenzione del percorso di Windows, ad esempio 'D:'.
Creare un file denominato
azure-pvc-files.yaml
e copiarlo nel codice YAML seguente. Assicurarsi checlaimName
corrisponda al PVC creato nel passaggio precedente.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
Creare il pod usando il comando
kubectl apply
.kubectl apply -f azure-pvc-files.yaml
È ora disponibile un pod in esecuzione con la condivisione file di File di Azure montata nella directory /mnt/azure. Questa configurazione può essere visualizzata quando si esamina il pod usando il comando
kubectl describe
. L'esempio sintetico di output seguente illustra il volume montato nel contenitore.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 [...]
Opzioni di montaggio
Il valore predefinito per fileMode
e dirMode
è 0777 per Kubernetes versioni 1.13.0 e successive. Se si crea dinamicamente il volume permanente con una classe di archiviazione, è possibile specificare le opzioni di montaggio nell'oggetto classe di archiviazione. Per altre informazioni, vedere Opzioni di montaggio. L'esempio seguente imposta 0777:
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
Uso dei tag di Azure
Per altre informazioni sull'uso dei tag di Azure, vedere Usare i tag di Azure nel servizio Azure Kubernetes.
Effettuare il provisioning statico di un volume
Questa sezione fornisce indicazioni per gli amministratori del cluster che vogliono creare uno o più volumi persistenti che includono i dettagli di una condivisione file di Azure esistente da usare con un carico di lavoro.
Parametri di provisioning statico per PersistentVolume
La tabella seguente mostra i parametri utilizzabili per definire un PersistentVolume.
Nome | Significato | Valore disponibile | Obbligatorio | Default value |
---|---|---|---|---|
volumeAttributes.resourceGroup | Specificare un nome del gruppo di risorse di Azure. | myResourceGroup | No | Se vuoto, il driver usa lo stesso nome del gruppo di risorse del cluster corrente. |
volumeAttributes.storageAccount | Consente di specificare il nome di un account di archiviazione di Azure esistente. | storageAccountName | Sì | |
volumeAttributes.shareName | Specificare un nome per la condivisione file di Azure. | fileShareName | Sì | |
volumeAttributes.folderName | Specificare un nome di cartella nella condivisione file di Azure. | folderName | No | Se il nome della cartella non esiste nella condivisione file, il montaggio avrà esito negativo. |
volumeAttributes.protocol | Specificare il protocollo di condivisione file. | smb , nfs |
No | smb |
volumeAttributes.server | Specificare l'indirizzo del server dell'account di archiviazione di Azure | Indirizzo del server esistente, ad esempio accountname.privatelink.file.core.windows.net . |
No | Se vuoto, il driver usa l'indirizzo predefinito accountname.file.core.windows.net o un altro account cloud sovrano. |
--- | I parametri seguenti sono solo per il protocollo SMB | --- | --- | --- |
volumeAttributes.secretName | Specificare un nome segreto che archivia il nome e la chiave dell'account di archiviazione. | No | ||
volumeAttributes.secretNamespace | Specificare uno spazio dei nomi segreto. | default ,kube-system , e così via. |
No | Spazio dei nomi PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Specificare un nome segreto che archivia il nome e la chiave dell'account di archiviazione. | Nome segreto esistente. | No | Se vuoto, il driver usa l'identità kubelet per ottenere la chiave dell'account. |
nodeStageSecretRef.namespace | Specificare uno spazio dei nomi segreto. | Spazio dei nomi Kubernetes | No | |
--- | I parametri seguenti sono solo per il protocollo NFS | --- | --- | --- |
volumeAttributes.fsGroupChangePolicy | Indica come il driver modifica la proprietà di un volume. Il pod securityContext.fsGroupChangePolicy viene ignorato. |
OnRootMismatch (impostazione predefinita), Always , None |
No | OnRootMismatch |
volumeAttributes.mountPermissions | Consente di specificare le autorizzazioni per le cartelle montate. Il valore predefinito è 0777 |
No |
Creare una condivisione file di Azure
Prima di poter usare una condivisione file di File di Azure come volume Kubernetes, è necessario creare un account di archiviazione di Azure e la condivisione file.
Ottenere il nome del gruppo di risorse usando il comando
az aks show
con il parametro--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
L'output del comando è simile all'esempio seguente:
MC_myResourceGroup_myAKSCluster_eastus
Creare un account di archiviazione usando il comando
az storage account create
con il parametro--sku
. Il comando seguente crea un account di archiviazione usando lo SKUStandard_LRS
. Assicurarsi di sostituire i segnaposto seguenti:myAKSStorageAccount
con il nome dell'account di archiviazionenodeResourceGroupName
con il nome del gruppo di risorse in cui sono ospitati i nodi del cluster del servizio Azure Kuberneteslocation
con il nome dell'area in cui creare la risorsa. Deve essere la stessa area dei nodi del cluster del servizio Azure Kubernetes.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
Esportare la stringa di connessione come variabile di ambiente usando il comando seguente, che viene usato per creare la condivisione file.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Creare la condivisione file usando il comando
az storage share create
. Assicurarsi di sostituireshareName
con il nome della condivisione.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Esportare la chiave dell'account di archiviazione come variabile di ambiente usando il comando seguente.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Ripetere il nome e la chiave dell'account di archiviazione usando il comando seguente. Copiare queste informazioni, perché sono necessari questi valori durante la creazione del volume Kubernetes.
echo Storage account key: $STORAGE_KEY
Creare un segreto Kubernetes
Kubernetes necessita di credenziali per accedere alla condivisione file creata nel passaggio precedente. Queste credenziali sono archiviate in un segreto Kubernetes, cui viene fatto riferimento durante la creazione di un pod Kubernetes.
Creare il segreto usando il comando
kubectl create secret
. L'esempio seguente crea un oggetto segreto denominato azure-secret e popola azurestorageaccountname e azurestorageaccountkey del passaggio precedente. Per usare l'account di archiviazione di Azure indicare il nome e la chiave dell'account.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Montare una condivisione file come volume permanente
Creare un nuovo file denominato
azurefiles-pv.yaml
e copiarlo nel contenuto seguente. Incsi
, aggiornareresourceGroup
,volumeHandle
eshareName
. Per le opzioni di montaggio, il valore predefinito perfileMode
edirMode
è 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
Creare il volume permanente usando il comando
kubectl create
.kubectl create -f azurefiles-pv.yaml
Creare un nuovo file denominato azurefiles-mount-options-pvc.yaml e copiare il contenuto seguente.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Creare PersistentVolumeClaim usando il comando
kubectl apply
.kubectl apply -f azurefiles-mount-options-pvc.yaml
Verificare che persistentVolumeClaim sia stato creato e associato a PersistentVolume usando il comando
kubectl get
.kubectl get pvc azurefile
L'output dal comando è simile all'esempio seguente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Aggiornare la specifica del contenitore per fare riferimento al PersistentVolumeClaim e al pod nel file YAML. Ad esempio:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Non è possibile aggiornare una specifica di pod, quindi eliminare il pod usando il comando
kubectl delete
e ricrearlo usando il comandokubectl apply
.kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Montare la condivisione file come volume inline
Nota
Per evitare problemi di prestazioni, è consigliabile usare un volume permanente anziché un volume inline quando numerosi pod accedono alla stessa condivisione file. Il volume inline può accedere solo ai segreti nello stesso spazio dei nomi del pod. Per specificare uno spazio dei nomi segreto diverso, usare un volume permanente.
Per montare la condivisione file di File di Azure nel pod, configurare il volume nella specifica del contenitore.
- Creare un nuovo file denominato
azure-files-pod.yaml
e copiarlo nel contenuto seguente. Se è stato modificato il nome della condivisione file o del nome del segreto, aggiornareshareName
esecretName
. È anche possibile aggiornare ilmountPath
, ovvero il percorso in cui è montata la condivisione File nel pod. Per i contenitori di Windows Server, specificare unmountPath
usando la convenzione del percorso di Windows, ad esempio '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
Creare il pod usando il comando
kubectl apply
.kubectl apply -f azure-files-pod.yaml
A questo punto è disponibile un pod in esecuzione con una condivisione file di File di Azure montata in /mnt/azure. È possibile verificare che la condivisione sia montata correttamente usando il comando
kubectl describe
.kubectl describe pod mypod
Passaggi successivi
Per i parametri del driver CSI di File di Azure, vedere Parametri del driver CSI.
Per le procedure consigliate associate, vedere Procedure consigliate per archiviazione e backup nel servizio Azure Kubernetes.
Azure Kubernetes Service