Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come scegliere e implementare le opzioni di archiviazione più efficaci per i carichi di lavoro del servizio Azure Kubernetes. La selezione della soluzione di archiviazione appropriata è fondamentale per ottenere prestazioni, affidabilità e costi ottimali dell'applicazione nell'ambiente Kubernetes.
Il servizio Azure Kubernetes supporta carichi di lavoro senza stato e con stato. Quando si distribuiscono applicazioni con stato, sono necessarie soluzioni di archiviazione appropriate per mantenere lo stato dell'applicazione. Azure Kubernetes Service (AKS) si integra con diverse opzioni di archiviazione nativa, tra cui database gestiti, dischi (archiviazione a blocchi), file e archiviazione oggetti (BLOB). Ogni opzione offre caratteristiche di prestazioni diverse, garanzie di disponibilità e strutture di costo per soddisfare vari requisiti del carico di lavoro.
Selezionare il servizio di archiviazione adatto
La scelta della soluzione di archiviazione appropriata per i carichi di lavoro del servizio Azure Kubernetes influisce sulle prestazioni, sull'affidabilità e sull'efficienza dei costi. Usare queste linee guida per selezionare il servizio di archiviazione appropriato in base ai requisiti dei dati:
Tipo di dati | Servizio di archiviazione consigliato | Quando usare questo servizio |
---|---|---|
Dati strutturati | Database gestiti (Azure SQL, Database di Azure per MySQL, Database di Azure per PostgreSQL, Azure Cosmos DB) | Per i dati relazionali o NoSQL che richiedono disponibilità elevata predefinita, backup automatici e scalabilità senza gestire l'infrastruttura sottostante |
Dati non strutturati | Archiviazione BLOB di Azure | Per grandi volumi di dati oggetto, ad esempio file multimediali, documenti e log che richiedono l'accesso basato su HTTP/REST tramite SDK, protocollo NFS o BlobFuse |
Dati di file condivisi (prestazioni elevate) | Azure NetApp Files o Azure Files Premium | Per l'accesso ai file condivisi con latenza inferiore al millisecondo (Azure NetApp Files) o latenza coerente di pochi millisecondi (Azure Files Premium) |
Dati di configurazione condivisi | Standard di Azure Files | Per i file di configurazione, lo stato dell'applicazione condivisa e altri dati con requisiti di prestazioni moderati |
Carichi di lavoro di database e transazionali | Dischi gestiti di Azure (SSD Premium, SSD Premium v2, Disco Ultra) | Per le applicazioni con stato che richiedono storage a blocchi dedicato e ad alte prestazioni con specifiche garanzie di IOPS e throughput |
Effimero, dati temporanei | Dischi temporanei | Per dati temporanei che non necessitano di essere mantenuti tra i riavvii di pod o nodo |
Prima di prendere la decisione finale di archiviazione, valutare i requisiti di prestazioni tramite test di verifica dei concetti con carichi di lavoro realistici. Tenere presente che tutto il traffico di archiviazione nel servizio Azure Kubernetes passa attraverso la rete, quindi assicurarsi che i nodi abbiano una larghezza di banda di rete sufficiente per gestire sia il traffico dell'applicazione che quello di archiviazione.
Considerazioni sulla progettazione
Le considerazioni seguenti riguardano la progettazione dell'archiviazione per AKS. Prendere in considerazione la posizione in cui è necessaria l'archiviazione nell'ambiente del servizio Azure Kubernetes e determinare la soluzione migliore per ogni requisito.
Dischi del sistema operativo
Per i dischi del sistema operativo, considerare i fattori seguenti:
Dischi temporanei per il sistema operativo. Ogni macchina virtuale in Azure richiede un disco per il sistema operativo. Poiché i nodi di Kubernetes sono temporanei, per impostazione predefinita AKS utilizza dischi del sistema operativo temporanei sulle dimensioni supportate delle macchine virtuali. Per altre informazioni sui dischi temporanei del sistema operativo, vedere Sistema operativo temporaneo.
Dischi gestiti per il sistema operativo. Se il carico di lavoro li richiede, è invece possibile usare normali dischi gestiti per i nodi nel cluster del servizio Azure Kubernetes. In questo modo sono supportati i carichi di lavoro che richiedono dati persistenti nell'unità del sistema operativo. Per altre informazioni sulle opzioni per l'archiviazione permanente, vedere Opzioni di archiviazione per le applicazioni nel servizio Azure Kubernetes.
Ridimensionamento dei dischi gestiti. Se si seleziona un disco gestito come disco del sistema operativo, assicurarsi di ridimensionarlo per supportare i requisiti del sistema operativo, del sistema Kubernetes e del carico di lavoro. Per altre informazioni sulle opzioni e sulle differenze, vedere Tipi di dischi gestiti di Azure.
Dati dell'applicazione
Alcuni carichi di lavoro richiedono un archivio dati coerente per l'archiviazione dei dati dell'applicazione. Se l'applicazione richiede un database, prendere in considerazione l'esplorazione dei database gestiti in Azure, che includono le opzioni seguenti:
Soluzioni di archiviazione in AKS
Se un database gestito non soddisfa le esigenze dell'applicazione, è consigliabile usare un'altra opzione di archiviazione disponibile per il servizio Azure Kubernetes per archiviare dati coerenti. Le opzioni includono soluzioni basate su disco, dischi temporanei, soluzioni basate su file, archiviazione BLOB e altre opzioni non trattate in questo articolo.
Soluzioni basate su disco
I dischi, o l'archiviazione a blocchi, sono ideali per archiviare i dati direttamente in un dispositivo non elaborato basato su blocchi. L'archiviazione basata su disco è ideale per l'archiviazione dei dati per i database ospitati dal cluster Kubernetes. In Azure i dischi gestiti sono la soluzione per ottenere l'archiviazione basata su blocchi.
Archiviazione su disco statica o creata dinamicamente. È necessario usare un disco statico creato all'esterno di AKS o il disco di archiviazione che AKS crea dinamicamente secondo le esigenze dei pod. L'archiviazione creata in modo dinamico può anche essere eliminata in modo dinamico. Per altre informazioni, vedere:
Ridondanza e prestazioni. Prendere in considerazione la ridondanza e le prestazioni di archiviazione richieste dal carico di lavoro. Per altre informazioni, vedere:
Disco condiviso. Valutare se è necessario un disco condiviso. Per altre informazioni sulle opzioni, vedere Condividere un disco gestito di Azure.
Dimensioni del nodo per dischi e velocità effettiva. Prendere in considerazione le dimensioni del nodo Kubernetes. Deve essere sufficientemente grande da supportare sia il numero di dischi che i requisiti di velocità effettiva aggregati. Per informazioni sulle dimensioni e le caratteristiche, vedere Dimensioni per le macchine virtuali in Azure.
Dimensioni del disco e prestazioni necessarie. Valutare se il disco gestito sia dimensionato in modo appropriato per i requisiti prestazionali del carico di lavoro. Le prestazioni aumentano man mano che le dimensioni del disco aumentano per HDD Standard, SSD Standard e SSD Premium v1. Per altre informazioni sui dischi gestiti, vedere Tipi di dischi gestiti di Azure.
Soluzioni temporanee per dischi
Valutare se l'applicazione richiede l'archiviazione temporanea non persistente o la posizione in cui si vogliono usare le unità a prestazioni elevate nelle macchine virtuali ottimizzate per l'archiviazione. Per connettersi a un volume temporaneo, è possibile usare l'opzione emptyDir in Kubernetes o il driver per un volume locale temporaneo CSI. È consigliabile usare emptyDir per i dati temporanei, ad esempio lo spazio scratch. Per l'archiviazione nella serie di macchine virtuali ottimizzate per l'archiviazione, è consigliabile usare CSI con un volume locale temporaneo. Per altre informazioni sui driver CSI, vedere Driver CSI (Container Storage Interface) nel servizio Azure Kubernetes.
Archiviazione dei container di Azure
Azure Container Storage è un servizio di gestione, distribuzione e orchestrazione basato sul cloud creato in modo nativo per i contenitori. Se si prevede di usare l'archiviazione basata su blocchi con la modalità ReadWriteOnce, utilizzando Dischi di Azure, Disco effimero o Azure Elastic SAN, Azure Container Storage offre vantaggi rispetto all'uso diretto dei driver CSI.
- Migliore rapporto prezzo-prestazioni: condividere un singolo disco tra più volumi fisici per ridurre l'overprovisioning e abbassare i costi.
- Scala PV superiore: supporta fino a 75 PV per nodo, superando il precedente limite di 64 PV con driver CSI.
- NVMe locale con replica: abilita la latenza e la resilienza dei sottomillisecondi per i dischi temporanei, ideale per i carichi di lavoro con replica predefinita, ad esempio Cassandra.
- Provisioning e ridimensionamento più veloci: le operazioni batch accelerano il provisioning e il ridimensionamento dei volumi rispetto alle operazioni seriali dei driver CSI.
Per ulteriori informazioni, vedere Che cos'è Azure Container Storage?
Soluzioni basate su file
Determinare se i pod richiedono l'accesso a un file system condiviso. Usare un file system condiviso per i dati di applicazione e configurazione che più pod nel cluster Kubernetes devono leggere e condividere. L'archiviazione di file fornisce un file system condiviso tramite protocolli come NFS o SMB/Common Internet File System (CIFS). Azure offre due soluzioni per l'archiviazione basata su file: File di Azure e Azure NetApp Files.
File di Azure
Per File di Azure, prendere in considerazione le opzioni seguenti:
Condivisione file statica o creata dinamicamente. Prendere in considerazione l'uso di una condivisione file statica creata all'esterno del servizio Azure Kubernetes o di una condivisione file creata dinamicamente dal servizio Azure Kubernetes per conto dell'utente. Per altre informazioni, vedere:
Prestazioni Standard o Premium. Valutare se le prestazioni standard sono sufficienti o se sono necessarie prestazioni Premium da File di Azure.
SMB/CIFS o NFS. Per l'accesso a File di Azure, valutare se il carico di lavoro deve usare l'API per il protocollo predefinito, SMB/CIFS o se il carico di lavoro richiede il supporto NFS.
Modello di rete per l'accesso. Si consideri il modello di rete che si vuole usare per accedere a File di Azure: l'accesso tramite indirizzo IP pubblico diretto, un endpoint di servizio o un collegamento privato.
Azure NetApp Files
Per Azure NetApp Files, prendere in considerazione le opzioni seguenti:
Condivisione di Azure NetApp Files statica o creata dinamicamente. Prendere in considerazione l'uso di una condivisione statica di Azure NetApp Files che viene creata all'esterno di AKS o della condivisione file che AKS crea dinamicamente tramite Astra Control. Per altre informazioni, vedere:
Valutare le prestazioni. Valutare il livello di prestazioni necessario per il carico di lavoro. Per altre informazioni, vedere Considerazioni sulle prestazioni per Azure NetApp Files.
Pianificare la rete. Esplorare le raccomandazioni di rete per Azure NetApp Files. Per altre informazioni, vedere Linee guida per la pianificazione di rete di Azure NetApp Files.
Archiviazione di oggetti binari di grandi dimensioni (BLOB)
Prendere in considerazione la quantità di dati non strutturati che l'applicazione deve archiviare. L'archiviazione BLOB di Azure è accessibile tramite un'API HTTP o tramite gli SDK. Il montaggio dell'archiviazione BLOB come file system in un contenitore o in un pod è ideale per carichi di lavoro dell'applicazione con grandi quantità di dati non strutturati, ad esempio file di log, immagini, documenti, supporti di streaming e dati di ripristino di emergenza.
Ridondanza dei dati. Considerare la ridondanza dei dati adatta all'applicazione. Per altre informazioni, vedere Ridondanza di Archiviazione di Azure. La ridondanza dei dati viene selezionata al livello dell'account di archiviazione.
Livello di prestazioni. Considerare il livello di prestazioni dell'archiviazione BLOB richiesto dall'applicazione. Per ulteriori informazioni, vedere Livelli di accesso per dati hot, cool e di archivio per i dati BLOB.
Metodo di autenticazione per l'accesso. Considera quale metodo di autenticazione l'applicazione deve usare per l'accesso all'archiviazione blob: chiave di archiviazione, SAS o ID Microsoft Entra. Per altre informazioni, vedere Autorizzare l'accesso ai dati in Archiviazione di Azure.
API per l'astrazione dell'archiviazione BLOB. Prendere in considerazione l'API da usare. In genere, le applicazioni che accedono all'archiviazione BLOB usano l'API nell'applicazione tramite uno degli SDK, che astrae l'interazione con l'archiviazione BLOB dal cluster Kubernetes. Per altre informazioni sulle librerie per vari linguaggi di programmazione, vedere Introduzione all'archiviazione BLOB di Azure.
Archiviazione BLOB statica o creata dinamicamente. Prendere in considerazione l'uso di un contenitore di archiviazione blob statico che crei al di fuori di AKS o del contenitore di archiviazione blob che AKS crea dinamicamente per conto tuo. Per altre informazioni, vedere:
Driver per l'accesso all'archiviazione. Valutare il modo in cui l'applicazione deve accedere all'archiviazione BLOB. Per accedervi come file system, è possibile usare il driver CSI BLOB in Kubernetes. Questo driver consente l'accesso all'archiviazione BLOB tramite il protocollo NFSv3 o tramite un driver fuse.
Altre soluzioni di archiviazione
In Azure sono disponibili più soluzioni di archiviazione specializzate che possono essere integrate con Kubernetes. Questo articolo non tratta queste soluzioni di archiviazione specializzate, ma l'elenco seguente identifica le possibili soluzioni:
Cache HPC di Azure. Cache HPC velocizza l'accesso ai dati per le attività HPC (High Performance Computing). Memorizzando nella cache i file di Azure, Cache HPC di Azure aggiunge la scalabilità del cloud computing al flusso di lavoro esistente. Per altre informazioni, vedere Integrare Cache HPC di Azure con il servizio Azure Kubernetes.
Azure Data Lake Storage Gen2. Data Lake Storage Gen2 è un tipo speciale di archiviazione BLOB ottimizzato per carichi di lavoro di Big Data come Hadoop e Spark. Per altre informazioni, vedere Introduzione ad Azure Data Lake Storage Gen2.
Consigli per la progettazione
Questa sezione fornisce raccomandazioni efficaci per i clienti di Azure.
Usare collegamento privato di Azure. Per la sicurezza, è consigliabile usare collegamento privato di Azure per tutte le soluzioni di archiviazione che lo supportano. Il collegamento privato di Azure consente l'accesso ai servizi di Azure, ad esempio Archiviazione di Azure e database SQL, e ai servizi ospitati in Azure tramite un endpoint privato nella rete virtuale. Per altre informazioni, vedere Che cos'è Collegamento privato di Azure?.
Usare dischi temporanei per il sistema operativo. Per i dischi del sistema operativo, è consigliabile usare dischi temporanei. Per trarre vantaggio da questa funzionalità, selezionare una dimensione della macchina virtuale con un disco temporaneo di dimensioni adeguate. Per altre informazioni, vedere Dischi temporanei del sistema operativo per le macchine virtuali di Azure.
Usare i database gestiti. Per i dati dell'applicazione, è consigliabile usare database gestiti. Per un elenco delle opzioni di database, vedere Tipi di database in Azure.
Le sezioni seguenti descrivono altre raccomandazioni per dischi di Azure, File di Azure e archiviazione BLOB.
Usare Archiviazione contenitori di Azure
Le sezioni seguenti contengono raccomandazioni per l'uso di Azure Container Storage con AKS.
Requisiti di Archiviazione di Azure Container
- Prerequisiti del cluster del servizio Azure Kubernetes: distribuire un cluster del servizio Azure Kubernetes con almeno tre macchine virtuali nel pool di nodi, ognuna con almeno quattro vCPU.
- Limitazioni della modalità di accesso: L'archiviazione di Azure Container supporta solo la modalità di accesso ReadWriteOnce. Per i carichi di lavoro che richiedono l'accesso ReadWriteMany, usare invece File di Azure. Per altre informazioni sulle modalità di accesso, vedere la documentazione di Kubernetes.
Scegliere il tipo di archiviazione di Azure Container corretto
Dischi di Azure: usare per i database di livello 1 e per utilizzo generico, ad esempio MySQL, MongoDB e PostgreSQL. Quando si usano dischi UltraSSD_LRS o PremiumV2_LRS, specificare i parametri delle prestazioni (IOPS e velocità effettiva) direttamente nella definizione del pool di archiviazione con i parametri IOPSReadWrite e MBpsReadWrite. Questo approccio garantisce che Azure Container Storage fornisca risorse di disco ottimali per le esigenze prestazionali.
Dischi temporanei di Azure: ideale per le applicazioni che richiedono una latenza ultra bassa (submillisecond) senza requisiti di durabilità dei dati o con la replica dei dati a livello di applicazione predefinita, ad esempio Cassandra. I dati nei dischi temporanei non vengono mantenuti tramite i riavvii delle macchine virtuali. Mentre Azure Container Storage con NVMe supporta la replica del volume per la resilienza contro i guasti di un singolo nodo, si perdono i dati se tutte le repliche vengono riavviate contemporaneamente. Valutare attentamente questo rischio per il carico di lavoro specifico. NVMe è disponibile su SKU di macchine virtuali L-Family ottimizzate per l'archiviazione.
Configurare la resilienza di Archiviazione di Azure Container
Quando si progetta la resilienza con Azure Container Storage, scegliere uno di questi approcci per la disponibilità elevata:
Approccio alla resilienza | Descrizione | Il migliore per |
---|---|---|
Archiviazione con ridondanza della zona (ZRS) | Replica automaticamente i dati tra due o più zone di disponibilità per proteggersi da errori di zona. | Carichi di lavoro che richiedono la protezione automatica dei dati da errori a livello di zona senza replica a livello di applicazione. |
Pool di archiviazione in più zone | Distribuisce la capacità di archiviazione equamente tra le zone di disponibilità, con ogni zona che gestisce le proprie risorse di archiviazione distinte. | Carichi di lavoro con replica a livello di applicazione (ad esempio Cassandra) che gestiscono già la ridondanza dei dati. |
Annotazioni
Non è possibile usare contemporaneamente sia l'archiviazione con ridondanza della zona (ZRS) sia i pool di archiviazione multi-zona, poiché servono a scopi simili attraverso meccanismi diversi. Implementare istantanee regolari del volume come parte della strategia di backup e ripristino di emergenza, indipendentemente dall'approccio scelto.
Dischi di Azure
Per i dischi di Azure, è consigliabile usare le opzioni di progettazione seguenti:
Usare dischi Premium o Ultra. Nella maggior parte dei casi, è consigliabile usare dischi Premium o Ultra per garantire prestazioni adeguate. Per altre informazioni, vedere Archiviazione su disco di Azure.
Ridimensionare il nodo per i dischi e il throughput. È consigliabile assicurarsi che le dimensioni del nodo Kubernetes siano sufficienti per supportare il numero di dischi e la quantità di velocità effettiva aggregata. Per informazioni sulle dimensioni e le caratteristiche, vedere Dimensioni per le macchine virtuali in Azure.
Crea snapshot di volumi persistenti. Creare istantanee di volumi persistenti per effettuare il backup dei dati o ripristinare i volumi a uno stato precedente utilizzando il driver CSI di Azure Disks. Per ulteriori informazioni, vedere Istantanee del volume.
Evitare lo striping sui dischi. È consigliabile evitare lo striping tra più dischi in Kubernetes.
Utilizzare PV/PVC. È consigliabile usare PV e PVC in Kubernetes per creare in modo dinamico i dischi dove necessario. Per altre informazioni sull'archiviazione permanente, vedere Opzioni di archiviazione per le applicazioni nel servizio Azure Kubernetes.
File di Azure
Per File di Azure, è consigliabile usare le opzioni di progettazione seguenti:
Scegliere Premium. Se le prestazioni sono critiche, è consigliabile usare il livello Premium.
Creare account di archiviazione dedicati. È consigliabile fornire account di archiviazione dedicati per le condivisioni file.
Scegliere condivisioni file statiche o create dinamicamente. È consigliabile valutare attentamente se si vuole che il servizio Azure Kubernetes crei le condivisioni file o se si vuole crearle in modo statico all'esterno di Kubernetes. L'archiviazione creata in modo dinamico può anche essere eliminata in modo dinamico. Per altre informazioni su come consentire al servizio Azure Kubernetes di creare dinamicamente condivisioni file, vedere Creare e usare dinamicamente un volume permanente con File di Azure.
Azure NetApp Files
Per Azure NetApp Files, è consigliabile usare le opzioni di progettazione seguenti:
Scegliere un livello di prestazioni in base ai requisiti dell'applicazione. Azure NetApp Files offre tre livelli di prestazioni che offrono diverse classi di prestazioni. Per altre informazioni, vedere Considerazioni sulle prestazioni per Azure NetApp Files.
Creare pool di capacità nella stessa area di Azure del cluster del servizio Azure Kubernetes. Per altre informazioni, vedere Creare un pool di capacità per Azure NetApp Files.
Usare il tipo QoS automatico per i pool di capacità.
Pianificare la rete. Esistono due opzioni per la progettazione della rete:
- Se si utilizza la stessa rete virtuale per AKS e Azure NetApp Files, creare una subnet dedicata per Azure NetApp Files e delegare la subnet a Microsoft.NetApp/Volumes.
- Se usi reti virtuali diverse, stabilisci connessioni di peering di rete virtuale tra di esse.
Archiviazione di oggetti binari di grandi dimensioni (BLOB)
Per l'archiviazione BLOB, è consigliabile usare le opzioni di progettazione seguenti:
Usare un SDK per interfacciarsi con l'archiviazione. È consigliabile usare un SDK a livello di applicazione per interfacciarsi con l'archiviazione BLOB.
Usare CSI con NFS per interfacciarsi con l'archiviazione. Se non è possibile usare un SDK a livello di applicazione per interfacciarsi con l'archiviazione BLOB, è consigliabile usare l'opzione NFS v3 nel driver CSI BLOB. Per ulteriori informazioni, vedere il driver CSI (Container Storage Interface) per l'archiviazione delle BLOB di Azure.
Usare Microsoft Entra ID per l'accesso. È consigliabile usare Microsoft Entra ID per autorizzare l'accesso all'archiviazione BLOB. Evitare di usare una chiave dell'account di archiviazione condivisa. Per ulteriori informazioni, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.
Regolare i livelli di livello. È consigliabile usare i criteri di gestione del ciclo di vita per spostare i dati a cui si accede raramente a un livello di accesso più sporadico. Per ulteriori informazioni, vedere Livelli di accesso per dati hot, cool e di archivio per i dati BLOB.
Passaggi successivi
Scopri come definire lo scopo dell'allocazione dei costi per una distribuzione, un servizio, un'etichetta, un pod o uno spazio dei nomi in AKS usando Kubecost.