Condividi tramite


Opzioni di archiviazione per un cluster Kubernetes

Questo articolo confronta le funzionalità di archiviazione di Amazon Elastic Kubernetes Service (Amazon EKS) e servizio Azure Kubernetes (AKS) e descrive le opzioni per archiviare i dati del carico di lavoro nel servizio Azure Kubernetes.

Nota

Questo articolo fa parte di una serie di articoli che aiutano i professionisti che hanno familiarità con Amazon EKS per comprendere servizio Azure Kubernetes (servizio Azure Kubernetes).

Opzioni di archiviazione amazon EKS

In Amazon EKS, dopo Kubernetes versione 1.11, il cluster ha una StorageClass predefinita chiamata gp2 per attestazioni di volume persistente. Gli amministratori possono aggiungere driver per definire altre classi di archiviazione, ad esempio:

  • Driver Amazon EBS CSI come componente aggiuntivo Amazon EKS
  • Componente aggiuntivo self-managed CSI di Amazon EBS
  • Driver Amazon EFS CSI
  • Driver Amazon FSx per Lustre CSI
  • Driver CSI amazon FSx per NetApp ONTAP

Aggiungendo driver e classi di archiviazione, è possibile usare servizi di archiviazione come:

  • Amazon Elastic Block Store (Amazon EBS), una soluzione di archiviazione a livello di blocco usata con le istanze di Amazon Elastic Compute Cloud (EC2) per archiviare dati persistenti. Questo servizio è simile all'archiviazione su disco di Azure, che ha diversi SKU, ad esempio SSD Standard, SSD Premium o Archiviazione su disco Ultra, a seconda delle prestazioni necessarie.

  • Amazon Elastic File System (Amazon EFS), che fornisce l'accesso di file system di rete a file system esterni che possono essere condivisi tra istanze. La soluzione Azure equivalente è File di Azure e File di Azure Premium con accesso SMB (Server Message Block) 3.0 e NFS.

  • Lustre, un file system open source comunemente usato in HPC (High Performance Computing). In Azure è possibile usare Archiviazione su disco Ultra o Azure Cache HPC per i carichi di lavoro in cui la velocità è importante, ad esempio Machine Learning e HPC.

  • NetApp ONTAP, archiviazione condivisa ONTAP completamente gestita in Amazon Web Services (AWS). Azure NetApp Files è un servizio di archiviazione file simile in Azure basato sulla tecnologia NetApp.

Opzioni di archiviazione del servizio Azure Kubernetes

Per impostazione predefinita, ogni cluster del servizio Azure Kubernetes include le classi di archiviazione predefinite seguenti:

  • La classe di archiviazione predefinita, managed-csi, usa l'unità SSD Standard di archiviazione su disco. L'unità SSD Standard è un'opzione di archiviazione conveniente ottimizzata per i carichi di lavoro che richiedono prestazioni coerenti a operazioni di output di input inferiori al secondo (IOPS).
  • La managed-csi-premium classe usa dischi gestiti SSD Premium di Archiviazione su disco.
  • La azurefile-csi classe usa File di Azure per fornire l'accesso condiviso simultaneo allo stesso volume di archiviazione, usando SMB o NFS.
  • La azurefile-csi-premium classe usa File di Azure Premium per le condivisioni file con carichi di lavoro a elevato utilizzo di operazioni di I/O al secondo. File di Azure Premium offre bassa latenza e velocità effettiva elevata supportata dall'archiviazione SSD.

È possibile estendere queste opzioni aggiungendo altre classi di archiviazione e integrando con altre soluzioni di archiviazione disponibili, ad esempio:

  • Archiviazione su disco Ultra
  • Azure NetApp Files
  • Cache HPC
  • Server NFS
  • Soluzioni di archiviazione di terze parti

Archiviazione su disco di Azure

Per impostazione predefinita, un cluster del servizio Azure Kubernetes viene fornito con classi di archiviazione e managed-csi-premium create managed-csi in modo preliminare che usano l'archiviazione su disco. Analogamente a Amazon EBS, queste classi creano un disco gestito o un dispositivo a blocchi collegato al nodo per l'accesso ai pod.

Le classi di archiviazione archiviazione su disco consentono il provisioning di volumi statici e dinamici . I criteri di recupero assicurano che il disco venga eliminato con il volume permanente. È possibile espandere il disco modificando l'attestazione del volume permanente.

Queste classi di archiviazione usano dischi gestiti di Azure con l'archiviazione con ridondanza locale. L'archiviazione con ridondanza locale indica che i dati hanno tre copie sincrone all'interno di una singola posizione fisica in un'area primaria di Azure. L'archiviazione con ridondanza locale è l'opzione di replica meno costosa, ma non offre protezione da un errore del data center. Per ridurre questo rischio, eseguire backup o snapshot regolari dei dati di archiviazione su disco usando soluzioni come Velero o Backup di Azure che possono usare tecnologie snapshot predefinite.

Entrambe le classi di archiviazione sono supportate da dischi gestiti e entrambe usano unità SSD (Solid State Disk). È importante comprendere le differenze tra dischi Standard e Premium:

  • I dischi Standard sono tariffari in base alle dimensioni e alle transazioni di archiviazione.
  • I dischi Premium vengono addebitati solo in base alle dimensioni, che possono renderli più economici per i carichi di lavoro che richiedono un numero elevato di transazioni.
  • Le unità SSD Premium offrono una velocità effettiva massima maggiore e operazioni di I/O al secondo, come illustrato in questo confronto.
  • L'archiviazione Premium è consigliata per la maggior parte dei carichi di lavoro di produzione e sviluppo.

Se si usano i dischi gestiti di Azure come classe di archiviazione primaria, prendere in considerazione lo SKU della macchina virtuale (VM) scelto per il cluster Kubernetes. Le macchine virtuali di Azure limitano il numero di dischi che è possibile collegare e il limite varia in base alle dimensioni della macchina virtuale. Inoltre, poiché i dischi di Azure vengono montati come ReadWriteOnce, sono disponibili solo per un singolo pod.

Dischi SSD Premium di Azure v2

I dischi SSD Premium v2 di Azure offrono carichi di lavoro aziendali intensi da I/O, una latenza del disco submillisecond coerente e un numero elevato di operazioni di I/O al secondo e velocità effettiva. Le prestazioni (capacità, velocità effettiva e operazioni di I/O al secondo) dei dischi SSD Premium v2 possono essere configurate in modo indipendente in qualsiasi momento, semplificando la realizzazione di scenari efficienti a livello di costi, pur soddisfacendo le esigenze di prestazioni. Per altre informazioni su come configurare un cluster del servizio Azure Kubernetes nuovo o esistente per l'uso di dischi SSD Premium di Azure v2, vedere Usare dischi SSD Premium di Azure v2 in servizio Azure Kubernetes.

Archiviazione su disco Ultra

Archiviazione su disco Ultra è un livello di disco gestito di Azure che offre velocità effettiva elevata, operazioni di I/O al secondo e archiviazione su disco a bassa latenza coerente per le macchine virtuali di Azure. L'archiviazione su disco Ultra è destinata a carichi di lavoro che sono dati e transazioni pesanti. Analogamente ad altri SKU di archiviazione su disco e Amazon EBS, Archiviazione su disco Ultra monta un pod alla volta e non fornisce l'accesso simultaneo.

Usare il flag --enable-ultra-ssd per abilitare l'archiviazione su disco Ultra nel cluster del servizio Azure Kubernetes.

Se si sceglie Archiviazione su disco Ultra, tenere presente le limitazioni e assicurarsi di selezionare una dimensione di macchina virtuale compatibile. Archiviazione su disco Ultra è disponibile con la replica di archiviazione con ridondanza locale.

Bring Your Own Keys (BYOK)

Azure crittografa tutti i dati inattivi in un disco gestito. Per impostazione predefinita, i dati vengono crittografati con chiavi gestite da Microsoft. Per un maggiore controllo sulle chiavi di crittografia, è possibile fornire chiavi gestite dal cliente da usare per la crittografia dei dati inattivi sia per il sistema operativo sia per i dischi dati per i cluster del servizio Azure Kubernetes. Per altre informazioni, vedere Bring Your Own Keys (BYOK) con dischi gestiti di Azure in servizio Azure Kubernetes (AKS).

File di Azure

L'archiviazione su disco non può fornire l'accesso simultaneo a un volume, ma è possibile usare File di Azure per connettersi usando il protocollo SMB e quindi montare un volume condiviso supportato da Archiviazione di Azure. Questo processo fornisce una risorsa di archiviazione collegata alla rete simile a Amazon EFS. Come per l'archiviazione su disco, sono disponibili due opzioni:

  • File di Azure l'archiviazione Standard è supportata da normali unità disco rigido (HDD).
  • File di Azure Archiviazione Premium esegue il backup della condivisione file con unità SSD ad alte prestazioni. La dimensione minima della condivisione file per Premium è 100 GB.

File di Azure sono disponibili le opzioni di replica dell'account di archiviazione seguenti per proteggere i dati in caso di errore:

  • Standard_LRS: Archiviazione con ridondanza locale Standard
  • Standard_GRS: archiviazione con ridondanza geografica standard
  • Standard_ZRS: Archiviazione con ridondanza della zona standard
  • Standard_RAGRS: Archiviazione con ridondanza geografica e accesso in lettura Standard (RA-GRS)
  • Standard_RAGZRS: Archiviazione con ridondanza geografica della zona con accesso in lettura standard (RA-GZRS)
  • Premium_LRS: Archiviazione con ridondanza locale Premium
  • Premium_ZRS: Archiviazione con ridondanza della zona Premium

Per ottimizzare i costi per File di Azure, acquistare File di Azure prenotazioni di capacità.

Azure Container Storage

Archiviazione di Azure Container è un servizio di gestione, distribuzione e orchestrazione basato sul cloud creato in modo nativo per i contenitori. Si integra con Kubernetes e consente di effettuare in modo dinamico e automatico il provisioning di volumi persistenti per archiviare dati per le applicazioni con stato in esecuzione nei cluster Kubernetes.

Archiviazione contenitori di Azure usa le offerte di Archiviazione di Azure esistenti per l'archiviazione dei dati effettiva, offrendo una soluzione di orchestrazione e gestione dei volumi creata appositamente per i contenitori. Le opzioni di archiviazione di backup supportate includono:

  • Dischi di Azure: controllo granulare degli SKU e delle configurazioni di archiviazione. Sono adatti per i database di livello 1 e per utilizzo generico.
  • Dischi temporanei: usa le risorse di archiviazione locali nei nodi del servizio Azure Kubernetes (NVMe o UNITÀ SSD temporanea). Ideale per le applicazioni senza requisiti di durabilità dei dati o con supporto predefinito per la replica dei dati. Il servizio Azure Kubernetes individua l'archiviazione temporanea disponibile nei nodi del servizio Azure Kubernetes e la acquisisce per la distribuzione del volume.
  • SAN elastico di Azure: effettuare il provisioning di una risorsa completamente gestita su richiesta. Adatto per database per utilizzo generico, servizi di streaming e messaggistica, ambienti CD/CI e altri carichi di lavoro di livello 1/livello 2. Più cluster possono accedere a una singola SAN contemporaneamente, tuttavia i volumi permanenti possono essere collegati solo da un utente alla volta.

Fino ad ora, fornire l'archiviazione cloud per i contenitori necessari usando singoli driver dell'interfaccia di archiviazione dei contenitori (CSI) per usare i servizi di archiviazione destinati ai carichi di lavoro incentrati sull'infrastruttura distribuita come servizio (IaaS) e renderli utilizzabili per i contenitori. In questo modo si crea un sovraccarico operativo e si aumenta il rischio di problemi relativi alla disponibilità dell'applicazione, alla scalabilità, alle prestazioni, all'usabilità e ai costi.

Azure Container Storage deriva da OpenEBS, una soluzione open source che offre funzionalità di archiviazione dei contenitori per Kubernetes. Azure Container Storage offre una soluzione di orchestrazione di volumi gestiti tramite controller di archiviazione basati su microservizi in un ambiente Kubernetes e dà vita a una vera archiviazione nativa del contenitore.

Archiviazione azure Container è adatta negli scenari seguenti:

  • Accelerare le iniziative da macchina virtuale a contenitore: Azure Container Storage espone l'intera gamma di offerte di archiviazione a blocchi di Azure che in precedenza erano disponibili solo per le macchine virtuali e le rende disponibili per i contenitori. Ciò include un disco temporaneo che offre una latenza estremamente bassa per carichi di lavoro come Cassandra, nonché SAN di Elastic in Azure che fornisce destinazioni native iSCSI e con provisioning condiviso.

  • Semplificare la gestione dei volumi con Kubernetes: fornendo l'orchestrazione del volume tramite il piano di controllo Kubernetes, Azure Container Storage semplifica la distribuzione e la gestione dei volumi all'interno di Kubernetes, senza la necessità di spostarsi tra piani di controllo diversi.

  • Ridurre il costo totale di proprietà (TCO): migliorare l'efficienza dei costi aumentando la scalabilità dei volumi persistenti supportati per ogni pod o nodo. Ridurre le risorse di archiviazione necessarie per il provisioning condividendo in modo dinamico le risorse di archiviazione. Si noti che il supporto per l'aumento delle prestazioni per il pool di archiviazione stesso non è fornito.

Archiviazione Azure Container offre i vantaggi principali seguenti:

  • Aumento rapido dei pod con stato: Azure Container Storage monta volumi persistenti su protocolli di archiviazione a blocchi di rete (NVMe-oF o iSCSI), offrendo collegamento e scollegamento rapidi di volumi persistenti. È possibile iniziare in piccolo e distribuire risorse di piccole dimensioni in base alle esigenze, assicurandosi che le applicazioni non vengano interrotte o non abbiano carenza di risorse durante l'inizializzazione o nell'ambiente di produzione. La resilienza delle applicazioni è stata migliorata con i respawn dei pod nel cluster, richiedendo un rapido spostamento dei volumi persistenti. Usando i protocolli di rete remoti, Archiviazione Azure Container associa strettamente il ciclo di vita del pod per supportare applicazioni con stato altamente resilienti e su larga scala nel servizio Azure Kubernetes.

  • Prestazioni migliorate per i carichi di lavoro con stato: Azure Container Storage consente prestazioni di lettura superiori e offre prestazioni di scrittura quasi simili a quelle su disco usando NVMe-oF su RDMA. Ciò consente ai clienti di soddisfare in modo conveniente i requisiti di prestazioni per vari carichi di lavoro dei contenitori, tra cui il livello 1 a I/O intensivo, l'utilizzo generico, quello sensibile alla velocità effettiva e quello di sviluppo/test. Accelerare il tempo di collegamento/scollegamento dei volumi persistenti e ridurre al minimo il tempo di failover dei pod.

  • Orchestrazione di volumi nativi di Kubernetes: creare pool di archiviazione e volumi permanenti, acquisire snapshot e gestire l'intero ciclo di vita dei volumi usando comandi kubectl senza passare da set di strumenti a diverse operazioni del piano di controllo.

Azure NetApp Files

Analogamente ad AWS NetApp ONTAP, Azure NetApp Files è un servizio di archiviazione file a consumo di livello aziendale e ad alte prestazioni. Azure NetApp Files è completamente gestito in Azure usando soluzioni NetApp. Come File di Azure, Azure NetApp Files consente a più pod di montare un volume. È possibile usare Astra Trident, un agente di orchestrazione di archiviazione dinamica open source per Kubernetes, per configurare il cluster del servizio Azure Kubernetes per l'uso di Azure NetApp Files.

Tenere presente i limiti delle risorse per Azure NetApp Files. La dimensione minima di un pool di capacità per Azure NetApp Files è 4 TiB. Azure NetApp Files viene addebitato in base alle dimensioni di cui è stato effettuato il provisioning anziché alla capacità usata.

Cache HPC di Azure

Azure Cache HPC velocizza l'accesso ai dati per le attività HPC, con tutta la scalabilità delle soluzioni cloud. Se si sceglie questa soluzione di archiviazione, assicurarsi di distribuire il cluster del servizio Azure Kubernetes in un'area che supporta cache HPC di Azure.

Server NFS

L'opzione migliore per l'accesso NFS condiviso consiste nell'usare File di Azure o Azure NetApp Files. È anche possibile creare un server NFS in una macchina virtuale di Azure che esporta volumi.

Tenere presente che questa opzione supporta solo il provisioning statico. È necessario effettuare manualmente il provisioning delle condivisioni NFS nel server e non eseguire questa operazione dal servizio Azure Kubernetes automaticamente.

Questa soluzione si basa sull'infrastruttura distribuita come servizio (IaaS) anziché sulla piattaforma distribuita come servizio (PaaS). L'utente è responsabile della gestione del server NFS, inclusi gli aggiornamenti del sistema operativo, la disponibilità elevata, i backup, il ripristino di emergenza e la scalabilità.

Disco del sistema operativo temporaneo

Per impostazione predefinita, Azure replica automaticamente il disco del sistema operativo per una macchina virtuale per Archiviazione di Azure per evitare perdite di dati quando la macchina virtuale viene spostata in un altro host. Tuttavia, poiché i contenitori non sono progettati per rendere persistente lo stato locale, questo comportamento offre un valore limitato, fornendo alcuni svantaggi. Questi svantaggi includono, ad esempio, il provisioning dei nodi più lento e una latenza di lettura/scrittura superiore.

Al contrario, i dischi temporanei del sistema operativo vengono archiviati solo nel computer host, proprio come un disco temporaneo. Con questa configurazione si ottiene una latenza di lettura/scrittura inferiore, insieme a un ridimensionamento più rapido dei nodi e agli aggiornamenti del cluster.

Nota

Quando non si richiedono in modo esplicito dischi gestiti di Azure per il sistema operativo, il servizio Azure Kubernetes usa il sistema operativo temporaneo, se possibile per una configurazione specifica del pool di nodi.

Per altre informazioni, vedi:

Soluzioni di terze parti

Come Amazon EKS, il servizio Azure Kubernetes è un'implementazione di Kubernetes ed è possibile integrare soluzioni di archiviazione Kubernetes di terze parti. Ecco alcuni esempi di soluzioni di archiviazione di terze parti per Kubernetes:

  • Rook trasforma i sistemi di archiviazione distribuiti in servizi di archiviazione auto-gestione automatizzando le attività di amministratore dell'archiviazione. Rook offre i servizi tramite un operatore Kubernetes per ogni provider di archiviazione.
  • GlusterFS è un file system di rete scalabile gratuito e open source che usa hardware comune off-the-shelf per creare soluzioni di archiviazione distribuite di grandi dimensioni per attività a elevato utilizzo di dati e larghezza di banda.
  • Ceph offre un servizio di archiviazione unificato affidabile e scalabile con interfacce di oggetti, blocchi e file da un singolo cluster creato da componenti hardware di base.
  • L'archiviazione di oggetti multicloud MinIO consente alle aziende di creare un'infrastruttura dati compatibile con AWS S3 in qualsiasi cloud, offrendo un'interfaccia coerente e portabile per i dati e le applicazioni.
  • Portworx è una soluzione end-to-end di archiviazione e gestione dei dati per progetti Kubernetes e iniziative basate su contenitori. Portworx offre risorse di archiviazione granulari per i contenitori, ripristino di emergenza, sicurezza dei dati e migrazioni multicloud.
  • Quobyte offre archiviazione file e oggetti ad alte prestazioni che è possibile distribuire in qualsiasi server o cloud per ridimensionare le prestazioni, gestire grandi quantità di dati e semplificare l'amministrazione.
  • Ondat offre un livello di archiviazione coerente in qualsiasi piattaforma. È possibile eseguire un database o qualsiasi carico di lavoro permanente in un ambiente Kubernetes senza dover gestire il livello di archiviazione.

Considerazioni sull'archiviazione kubernetes

Quando si sceglie una soluzione di archiviazione per Amazon EKS o servizio Azure Kubernetes, prendere in considerazione i fattori seguenti.

Modalità di accesso alle classi di archiviazione

In Kubernetes versione 1.21 e successive, le classi di archiviazione del servizio Azure Kubernetes e Amazon EKS usano solo i driver CSI (Container Storage Interface) e per impostazione predefinita.

Diversi servizi supportano classi di archiviazione con modalità di accesso diverse.

Service ReadWriteOnce ReadOnlyMany ReadWriteMany
Dischi di Azure X
File di Azure X X X
Azure NetApp Files X X X
Server NFS X X X
Cache HPC di Azure X X X

Provisioning dinamico e statico

Effettuare il provisioning dinamico dei volumi per ridurre il sovraccarico di gestione della creazione statica di volumi persistenti. Impostare un criterio di recupero corretto per evitare la presenza di dischi inutilizzati quando si eliminano i pod.

Backup

Scegliere uno strumento per eseguire il backup dei dati persistenti. Lo strumento deve corrispondere al tipo di archiviazione, ad esempio snapshot, Backup di Azure, Velero o Kasten.

Ottimizzazione dei costi

Per ottimizzare i costi di Archiviazione di Azure, usare le prenotazioni di Azure. Assicurarsi di controllare quali servizi supportano le prenotazioni di Azure. Vedere anche Gestione dei costi per un cluster Kubernetes.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Altri contributori:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi