Driver di Container Storage Interface (CSI) nel servizio Azure Kubernetes (AKS)
CSI (Container Storage Interface) è uno standard per l'esposizione di sistemi di archiviazione file e a blocchi arbitrari per carichi di lavoro in contenitori in Kubernetes. Adottando e usando CSI, il servizio Azure Kubernetes può scrivere, distribuire e eseguire l'iterazione dei plug-in per esporre sistemi di archiviazione nuovi o migliorare i sistemi di archiviazione esistenti in Kubernetes senza dover toccare il codice Kubernetes principale e attendere i cicli di rilascio.
Il supporto del driver di archiviazione CSI nel servizio Azure Kubernetes consente di usare in modo nativo:
- È possibile usare Dischi di Azure per creare una risorsa DataDisk Kubernetes. I dischi possono usare l'archiviazione Premium di Azure, supportata da unità SSD a prestazioni elevate, o l'archiviazione Standard di Azure, supportata da unità HDD o SSD standard regolari. Per la maggior parte dei carichi di lavoro di produzione e sviluppo, usare l’Archiviazione Premium. I dischi di Azure vengono montati come ReadWriteOnce e sono disponibili solo per un nodo nel servizio Azure Kubernetes. Per i volumi di archiviazione accessibili contemporaneamente da più nodi, usare File di Azure.
- Puoi usare File di Azure per montare una condivisione SMB 3.0/3.1 supportata da un account di archiviazione di Azure nei pod. Con File di Azure è possibile condividere dati tra più nodi e pod. File di Azure può usare l'archiviazione Standard di Azure con tradizionali unità HDD o l'archiviazione Premium di Azure con unità SSD ad alte prestazioni.
- L'archiviazione BLOB di Azure può essere usata per montare l'archiviazione BLOB (o l'archiviazione di oggetti) come file system in un contenitore o in un pod. L'uso dell'archiviazione BLOB consente al cluster di supportare applicazioni che funzionano con set di dati non strutturati di grandi dimensioni, ad esempio dati di file di log, immagini o documenti, HPC e altri. Inoltre, se inserisci dati in Azure Data Lake Storage, puoi montarli e usarli direttamente nel servizio Azure Kubernetes senza configurare un altro file system provvisorio.
Suggerimento
Se si vuole una soluzione completamente gestita per l'accesso a livello di blocco ai dati, è consigliabile usare Archiviazione Azure Container anziché i driver CSI. Archiviazione azure Container si integra con Kubernetes, consentendo il provisioning dinamico e automatico di volumi persistenti. Archiviazione azure Container supporta dischi di Azure, dischi temporanei e SAN elastico di Azure (anteprima) come risorsa di archiviazione di backup, offrendo flessibilità e scalabilità per le applicazioni con stato in esecuzione nei cluster Kubernetes.
Prerequisiti
- È necessario che sia installata e configurata l'interfaccia della riga di comando di Azure 2.42 o versione 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. - Se il driver di archiviazione CSI open source è installato nel cluster, devi disinstallarlo prima di abilitare il driver CSI di Archiviazione di Azure.
- Per applicare la definizione dei criteri di Criteri di Azure per il servizio Azure Kubernetes, i cluster Kubernetes devono usare il driver Container Storage Interface (CSI) StorageClass, il componente aggiuntivo Criteri di Azure deve essere abilitato nei cluster nuovi ed esistenti. Per un cluster esistente, rivedi Learn Azure Policy for Kubernetes (Informazioni su Criteri di Azure per Kubernetes) per abilitarlo.
Scenari supportati per la crittografia dei dischi
I driver di archiviazione CSI supportano gli scenari seguenti:
- Dischi gestiti crittografati con chiavi gestite dal cliente che usano Azure Key Vault archiviati in un tenant Microsoft Entra diverso.
- Crittografa i tuoi dischi di Archiviazione di Azure che ospitano i dati del sistema operativo e dell'applicazione del servizio Azure Kubernetes con chiavi gestite dal cliente.
Abilitare i driver di archiviazione CSI in un cluster esistente
Per abilitare i driver di archiviazione CSI in un nuovo cluster, includi uno dei parametri seguenti a seconda del sistema di archiviazione:
--enable-disk-driver
consente di abilitare il driver CSI di Dischi di Azure.--enable-file-driver
consente di abilitare il driver CSI di File di Azure.--enable-blob-driver
consente di abilitare il driver CSI di Archiviazione BLOB di Azure.--enable-snapshot-controller
consente di abilitare il controller snapshot.
az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
Per completare questa azione potrebbero essere necessari alcuni minuti. Una volta completata, nell'output visualizzerai lo stato dell'abilitazione del driver nel cluster. L'esempio seguente è simile alla sezione che indica i risultati quando si abilita il driver CSI di archiviazione BLOB:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Disabilitare i driver di archiviazione CSI in un cluster nuovo o esistente
Per disabilitare i driver di archiviazione CSI in un nuovo cluster, includi uno dei parametri seguenti, a seconda del sistema di archiviazione:
--disable-disk-driver
consente di disabilitare il driver CSI di Dischi di Azure.--disable-file-driver
consente di disabilitare il driver CSI di File di Azure.--disable-blob-driver
consente di disabilitare il driver CSI di Archiviazione BLOB di Azure.--disable-snapshot-controller
consente di disabilitare il controller snapshot.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller \
--generate-ssh-keys
Per disabilitare i driver di archiviazione CSI in un cluster esistente, usa uno dei parametri elencati in precedenza, a seconda del sistema di archiviazione:
az aks update \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller
Nota
È consigliabile eliminare l'oggetto PersistentVolumeClaim corrispondente anziché l'oggetto PersistentVolume durante l'eliminazione di un volume CSI. Il provisioner esterno nel driver CSI reagisce all'eliminazione di PersistentVolumeClaim e, in base ai criteri di recupero, invia la chiamata DeleteVolume ai comandi del driver del volume CSI per eliminare il volume. L'oggetto PersistentVolume viene quindi eliminato.
Eseguire la migrazione di classi di archiviazione in-tree personalizzate a CSI
Partendo da Kubernetes versione 1.26, i tipi di volume persistenti in-tree kubernetes.io/azure-disk e kubernetes.io/azure-file vengono deprecati e non saranno più supportati. I driver in-tree fanno riferimento ai driver di archiviazione che fanno parte del codice Kubernetes principale anziché ai driver CSI, che sono plug-in.
La rimozione di questi driver dopo la deprecazione non è pianificata, ma è consigliabile eseguire la migrazione ai driver CSI corrispondenti disk.csi.azure.com e file.csi.azure.com. Per esaminare le opzioni di migrazione per le classi di archiviazione e aggiornare il tuo cluster per usare dischi di Azure e driver CSI di File di Azure, vedi Eseguire la migrazione da driver in-tree a CSI.
Se hai creato classi di archiviazione dei driver in-tree, queste classi di archiviazione continuano a funzionare perché la migrazione CSI è attivata dopo l'aggiornamento del cluster alla versione 1.21.x. Se vuoi usare le funzionalità CSI, devi eseguire la migrazione.
Passaggi successivi
- Per usare il driver CSI per Dischi di Azure, vedi Usare Dischi di Azure con driver CSI.
- Per usare il driver CSI per File di Azure, vedi Usare File di Azure con driver CSI.
- Per usare il driver CSI per l'archiviazione BLOB di Azure, vedi Usare l'archiviazione BLOB di Azure con driver CSI
- Per ulteriori informazioni sulle procedure consigliate per l'archiviazione, vedi Procedure consigliate per l'archiviazione e i backup nel servizio Azure Kubernetes.
- Per ulteriori informazioni sulla migrazione CSI, vedi Migrazione del volume Kubernetes in-tree in CSI.
Azure Kubernetes Service