Considerazioni sull'archiviazione per il servizio Azure Kubernetes

Per eseguire carichi di lavoro di applicazioni specifici, l'organizzazione o l'organizzazione deve progettare funzionalità a livello di piattaforma a livello di piattaforma servizio Azure Kubernetes (AKS). Questi carichi di lavoro hanno probabilmente requisiti di archiviazione diversi. Quando si sceglie la soluzione di archiviazione appropriata per l'applicazione, sono disponibili diverse considerazioni, tra cui prestazioni, disponibilità, recuperabilità, sicurezza e costi. L'obiettivo di questo articolo è quello di guidare l'utente a scegliere l'opzione o la combinazione corretta di opzioni per il carico di lavoro.

Kubernetes può eseguire carichi di lavoro senza stato e con stato. I carichi di lavoro con stato spesso richiedono una soluzione di archiviazione per l'archiviazione dello stato. Il servizio Azure Kubernetes supporta più opzioni integrate per l'archiviazione nativa, che includono database gestiti, dischi (o blocchi) e file e archiviazione BLOB (o oggetto). Ognuna di queste opzioni offre differenti SKU, dimensioni e caratteristiche in termini di prestazioni. La scelta dell'opzione giusta richiede un'attenta considerazione.

Questo articolo descrive i fattori e le opzioni che è necessario prendere in considerazione in Selezionare il servizio di archiviazione e le considerazioni sulla progettazione corrette. Fornisce raccomandazioni specifiche nelle raccomandazioni di progettazione.

Selezionare il servizio di archiviazione adatto

La scelta degli SKU e delle dimensioni appropriate per le distribuzioni iniziali richiede alcune valutazioni e, potenzialmente, un ambiente di prova o di test. Di seguito sono riportate le linee guida generali per iniziare a usare l'archiviazione per il servizio Azure Kubernetes:

  • Dati strutturati. Per i dati strutturati che l'applicazione può archiviare in un database gestito disponibile nella piattaforma (ad esempio, Azure SQL), è consigliabile usare un database gestito.

  • Dati non strutturati. Per i dati non strutturati, ad esempio foto, video e documenti di testo, usare l'archiviazione BLOB. L'applicazione può eseguire questa operazione usando BLOB montati come file tramite Network File System (NFS) o a cui si accede come file system virtuale usando BlobFuse. In alternativa, l'applicazione può leggere e scrivere direttamente nell'archivio BLOB.

  • Dati dell'applicazione condivisi. Per i dati delle applicazioni condivise che richiedono prestazioni elevate, usare Azure NetApp Files o il livello Premium di File di Azure. Per i dati di configurazione condivisi che richiedono solo prestazioni limitate, usare il livello standard di File di Azure.

  • Larghezza di banda per le richieste di applicazione e archiviazione. Assicurarsi che i nodi abbiano una larghezza di banda di rete sufficiente per gestire le richieste dell'applicazione e le richieste di archiviazione. Archiviazione traffico passa attraverso lo stack di rete, indipendentemente dal fatto che il protocollo per i trasferimenti sia SMB (Server Message Block) o NFS.

  • Bassa latenza, operazioni di I/O al secondo elevate. Usare i dischi per l'archiviazione se l'applicazione necessita di una latenza costantemente bassa per le applicazioni di messaggistica e operazioni di I/O elevate al secondo e velocità effettiva elevata per eseguire i propri database in Kubernetes. Per ottenere prestazioni ottimali, è consigliabile usare l'unità SSD Premium di Azure, l'unità SSD Premium di Azure v2 o il disco Ultra di Azure Archiviazione.

Considerazioni relative alla progettazione

Le considerazioni seguenti riguardano la progettazione dell'archiviazione per il servizio Azure Kubernetes. 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 Kubernetes sono temporanei, per impostazione predefinita il servizio Azure Kubernetes usa dischi temporanei del sistema operativo nelle dimensioni di macchina virtuale supportate. 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 Archiviazione opzioni per le applicazioni in servizio Azure Kubernetes (servizio Azure Kubernetes).

  • Ridimensionamento dei dischi gestiti. Se si seleziona un disco gestito come disco del sistema operativo, assicurarsi che sia dimensionato in modo appropriato 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 Archiviazione nel servizio Azure Kubernetes

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. Valutare se si vuole usare un disco statico creato all'esterno del servizio Azure Kubernetes o se si vuole che il servizio Azure Kubernetes crei dinamicamente l'archiviazione su disco come pod o pod lo richieda. Archiviazione che viene creato in modo dinamico può anche essere eliminato in modo dinamico. Per altre informazioni, vedi:

  • Ridondanza e prestazioni. Prendere in considerazione la ridondanza e le prestazioni di archiviazione richieste dal carico di lavoro. Per altre informazioni, vedi:

  • 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 viene ridimensionato in modo appropriato per i requisiti di prestazioni 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 Archiviazione Interface) in servizio Azure Kubernetes (AKS).For more information about CSI drivers, see Container Archiviazione Interface (CSI) drivers on servizio Azure Kubernetes (AKS).

Soluzioni basate su file

Valutare se i pod devono condividere un file system. Un file system condiviso è ideale per i dati di applicazione e configurazione letti e condivisi da più pod nel cluster Kubernetes. L'archiviazione file espone un file system condiviso tramite 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. Valutare se si vuole usare una condivisione file statica creata all'esterno del servizio Azure Kubernetes o se si vuole che il servizio Azure Kubernetes crei dinamicamente la condivisione file per conto dell'utente. Per altre informazioni, vedi:

  • 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:

Archiviazione 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 altre informazioni, vedere Livelli di accesso ad accesso frequente, sporadico e archivio per i dati BLOB.

  • Metodo di autenticazione per l'accesso. Si consideri il metodo di autenticazione che l'applicazione deve usare per l'accesso all'archiviazione BLOB: chiave di archiviazione, firma di accesso condiviso o ID Microsoft Entra. Per altre informazioni, vedere Autorizzare l'accesso ai dati in Archiviazione di Azure.

  • API per astrarre l'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. Valutare se si vuole usare un contenitore di archiviazione BLOB statico creato all'esterno del servizio Azure Kubernetes o se si vuole che il servizio Azure Kubernetes crei il contenitore di archiviazione BLOB in modo dinamico per conto dell'utente. Per altre informazioni, vedi:

  • 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

Prendere in considerazione altri tipi di archiviazione se l'applicazione richiede un elemento non descritto in questo articolo. In Azure sono disponibili più soluzioni di archiviazione specializzate che possono essere integrate con Kubernetes. Questo articolo non tratta tali soluzioni, 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 Azure Cache HPC con servizio Azure Kubernetes.

  • Azure Data Lake Storage Gen2. Data Lake Archiviazione 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.

Suggerimenti per la progettazione

Questa sezione fornisce raccomandazioni basate su ciò che si è dimostrato efficace 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. 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, File di Azure e archiviazione BLOB di Azure.

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 Azure Disk Archiviazione.

  • Ridimensionare il nodo per i dischi e la velocità effettiva. È 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.

  • Creare snapshot di volumi persistenti. È consigliabile creare snapshot di volumi persistenti, per effettuare il provisioning di nuovi volumi prepopolato con i dati dello snapshot o per ripristinare un volume esistente in uno stato precedente usando la funzionalità snapshot del driver CSI di Dischi di Azure. Per altre informazioni, vedere Snapshot del volume.

  • Evitare lo striping del disco tra 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 Archiviazione opzioni per le applicazioni in servizio Azure Kubernetes (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. Archiviazione che viene creato in modo dinamico può anche essere eliminato 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 3 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:

    1. Se si usa la stessa rete virtuale per il servizio Azure Kubernetes e Azure NetApp Files, creare una subnet dedicata per Azure NetApp Files e delegare la subnet a Microsoft.NetApp/Volumes.
    2. Se si usano reti virtuali diverse, stabilire il peering reti virtuali tra di esse.

Archiviazione 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 altre informazioni, vedere Usare il driver CSI (Azure Blob Storage Container Archiviazione Interface).

  • 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 altre informazioni, vedere Livelli di accesso ad accesso frequente, sporadico e archivio per i dati BLOB.

Passaggi successivi

Informazioni su come definire l'ambito dell'allocazione dei costi per una distribuzione, un servizio, un'etichetta, un pod o uno spazio dei nomi nel servizio Azure Kubernetes usando Kubecost.