Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Storage
Panoramica
Esistono scenari in cui è possibile eseguire applicazioni che richiedono la conservazione dei dati a breve o lungo termine. In questi casi d'uso, i volumi possono essere definiti e montati dai Pod in modo che i relativi contenitori possano attingere a diversi meccanismi di archiviazione. Kubernetes supporta diversi tipi di volumi
Volumi effimeri
I volumi effimeri sono destinati ad applicazioni che richiedono volumi locali transitori ma non richiedono che i dati rimangano persistenti dopo il riavvio. Ne sono un esempio i requisiti per lo spazio di memoria virtuale, la memorizzazione nella cache e i dati di input di sola lettura come dati di configurazione e segreti. Puoi trovare maggiori dettagli sui volumi effimeri di Kubernetes qui.
Utilizzo di volumi EBS
Consigliamo di iniziare con gp3 come volume
Utilizzo di Amazon EC2 Instance Stores
Gli EC2 instance store di Amazon forniscono uno storage temporaneo a livello di blocco per le tue EC2 istanze. Lo storage fornito dagli EC2 instance store è accessibile tramite dischi fisicamente collegati agli host. A differenza di Amazon EBS, puoi collegare solo volumi di Instance Store all'avvio dell'istanza e questi volumi esistono solo per la durata dell'istanza. Non possono essere scollegati e ricollegati ad altre istanze. Puoi trovare ulteriori informazioni sugli Amazon EC2 Instance Store qui. Non sono previsti costi aggiuntivi associati al volume di un instance store. Ciò le rende (Instance Store Volume) più efficienti in termini di costi rispetto alle EC2 istanze generiche con grandi volumi EBS.
Per utilizzare i volumi di archiviazione locali in Kubernetes, devi partizionare, configurare e formattare i dischi utilizzando i dati utente di EC2 Amazon in modo che i volumi possano essere montati secondo le specifiche del pod. HostPath
Tieni presente che quando usi i volumi di Amazon EC2 Instance Store, il limite totale di IOPS viene condiviso con l'host e associa i Pod a un host specifico. È necessario esaminare attentamente i requisiti del carico di lavoro prima di adottare i volumi di Amazon EC2 Instance Store.
Volumi persistenti
Kubernetes è in genere associato all'esecuzione di applicazioni stateless. Tuttavia, esistono scenari in cui potresti voler eseguire microservizi che richiedono la conservazione di dati o informazioni persistenti da una richiesta all'altra. I database sono un esempio comune di questi casi d'uso. Tuttavia, i Pod e i contenitori o i processi al loro interno sono di natura effimera. Per conservare i dati oltre la durata di vita di un Pod, è possibile definire l' PVs accesso all'archiviazione in una posizione specifica indipendente dal Pod. I costi associati PVs dipendono in larga misura dal tipo di storage utilizzato e dal modo in cui le applicazioni lo utilizzano.
Di seguito sono elencati diversi tipi di opzioni di storage che supportano Kubernetes su PVs Amazon EKS. Le opzioni di storage descritte di seguito sono Amazon EBS, Amazon EFS, Amazon FSx for Lustre, Amazon FSx for NetApp ONTAP.
Volumi Amazon Elastic Block Store (EBS)
I volumi Amazon EBS possono essere utilizzati come Kubernetes PVs per fornire volumi di storage a livello di blocco. Sono ideali per database che si basano su letture e scritture casuali e applicazioni ad alta velocità di trasmissione che eseguono letture e scritture lunghe e continue. Il driver Amazon Elastic Block Store Container Storage Interface (CSI) consente ai cluster Amazon EKS di gestire il ciclo di vita dei volumi Amazon EBS per volumi persistenti. La Container Storage Interface abilita e facilita l'interazione tra Kubernetes e un sistema di storage. Quando un driver CSI viene distribuito nel cluster EKS, è possibile accedere alle sue funzionalità tramite le risorse di storage Kubernetes native come Persistent Volumes (PVs), Persistent Volume Claims () e Storage Classes (). PVCs SCs Questo collegamento
Scelta del volume giusto
Consigliamo di utilizzare lo storage a blocchi di ultima generazione (gp3) in quanto offre il giusto equilibrio tra prezzo e prestazioni. Consente inoltre di scalare gli IOPS e la velocità effettiva del volume indipendentemente dalle dimensioni del volume senza dover fornire ulteriore capacità di storage a blocchi. Se attualmente utilizzi volumi gp2, ti consigliamo vivamente di migrare ai volumi gp3. Il post sul blog La migrazione dei cluster Amazon EKS dai volumi EBS gp2 a gp3 spiega come migrare da gp2 a gp3 su cluster Amazon EKS
Amazon EBS consente di modificare le caratteristiche del volume come dimensione del volume, IOPS e velocità effettiva online. Utilizzando questa funzionalità è possibile migrare da gp2 a gp3 senza tempi di inattività delle applicazioni utilizzando le annotazioni PVC come descritto in questo blog
Quando hai applicazioni che richiedono prestazioni più elevate e richiedono volumi più grandi di quelli che un singolo volume gp3 può supportare
Un singolo volume gp3 può supportare fino a 16.000 IOPS massimi, 1.000 velocità effettiva massima, MiB/s massimo 16 TiB. Volume SSD Provisioned IOPS di ultima generazione che fornisce fino a 256.000 IOPS, 4.000 MiB/s, throughput e 64 TiB.
Tra queste opzioni, è consigliabile personalizzare al meglio le prestazioni e i costi di storage in base alle esigenze delle applicazioni.
Monitora e ottimizza nel tempo
È importante comprendere le prestazioni di base dell'applicazione e monitorarla per determinati volumi per verificare se soddisfa i requisiti richiesti requirements/expectations o se il provisioning è eccessivo (ad esempio, uno scenario in cui gli IOPS assegnati non vengono utilizzati appieno).
Invece di allocare un volume elevato dall'inizio, è possibile aumentare gradualmente le dimensioni del volume man mano che si accumulano dati. Puoi ridimensionare dinamicamente i volumi utilizzando la funzionalità di ridimensionamento del volume nel driver
Per identificare e rimuovere eventuali volumi EBS sospesi, puoi utilizzare la categoria di ottimizzazione dei costi di AWS trusted advisor. Questa funzionalità consente di identificare volumi non collegati o volumi con un'attività di scrittura molto bassa per un periodo di tempo. Esiste uno strumento di sola lettura, open source e nativo del cloud, chiamato Popeye
Per un'analisi approfondita del monitoraggio, consulta la guida all'osservabilità dell'ottimizzazione dei costi di EKS.
Un'altra opzione da prendere in considerazione sono le raccomandazioni sul volume di AWS Compute Optimizer Amazon EBS. Questo strumento identifica automaticamente la configurazione ottimale del volume e il corretto livello di prestazioni richiesto. Ad esempio, può essere utilizzato per impostazioni ottimali relative agli IOPS assegnati, alle dimensioni dei volumi e ai tipi di volumi EBS in base all'utilizzo massimo negli ultimi 14 giorni. Quantifica inoltre i potenziali risparmi mensili sui costi derivanti dalle sue raccomandazioni. Puoi consultare questo blog
Politica di conservazione dei backup
Puoi eseguire il backup dei dati sui tuoi volumi Amazon EBS scattando point-in-time istantanee. Il driver Amazon EBS CSI supporta gli snapshot dei volumi. Puoi imparare a creare un'istantanea e ripristinare un PV EBS utilizzando i passaggi descritti qui.
Le istantanee successive sono backup incrementali, il che significa che vengono salvati solo i blocchi sul dispositivo che sono stati modificati dopo l'istantanea più recente. Ciò consente di ridurre il tempo necessario per creare lo snapshot e risparmiare sui costi di archiviazione in quanto i dati non vengono duplicati. Tuttavia, l'aumento del numero di vecchie istantanee EBS senza una politica di conservazione adeguata può causare costi imprevisti quando si opera su larga scala. Se esegui il backup diretto dei volumi Amazon EBS tramite l'API AWS, puoi sfruttare Amazon Data Lifecycle Manager
Nota
Al momento non è possibile utilizzare Amazon DLM tramite il driver Amazon EBS CSI.
In un ambiente Kubernetes, puoi sfruttare uno strumento open source chiamato Velero per eseguire il backup dei tuoi EBS Persistent Volumes.
Amazon Elastic File System (EFS)
Amazon Elastic File System (EFS)
Uno dei principali vantaggi di Amazon EFS è che può essere montato da più container distribuiti su più nodi e più zone di disponibilità. Un altro vantaggio è che paghi solo per lo storage che utilizzi. I file system EFS cresceranno e si ridurranno automaticamente man mano che si aggiungono e rimuovono file, eliminando la necessità di pianificare la capacità.
Per utilizzare Amazon EFS in Kubernetes, devi utilizzare il driver Amazon Elastic File System Container Storage Interface (CSI),. aws-efs-csi-driver
Scelta della classe di storage EFS giusta
Amazon EFS offre quattro classi di storage.
Due classi di storage standard:
-
Standard Amazon EFS
-
Amazon EFS Standard-Accesso non frequente (
EFS Standard-IA)
Due classi di storage a zona singola:
-
Amazon EFS One Zone-Accesso non frequente (EFS One Zone-IA)
Le classi di storage Infrequent Access (IA) sono ottimizzate in termini di costi per i file a cui non si accede tutti i giorni. Con la gestione del ciclo di vita di Amazon EFS, puoi spostare file a cui non è stato effettuato l'accesso per la durata della politica del ciclo di vita (7, 14, 30, 60 o 90 giorni) nelle classi di storage IA, il che può ridurre i costi di storage fino al 92 percento rispetto rispettivamente alle classi di storage EFS Standard ed EFS One Zone.
Con EFS Intelligent-Tiering, la gestione del ciclo di vita monitora i modelli di accesso del file system e sposta automaticamente i file nella classe di storage più ottimale.
Nota
aws-efs-csi-driver attualmente non ha il controllo sulla modifica delle classi di storage, sulla gestione del ciclo di vita o su Intelligent-Tiering. Questi devono essere configurati manualmente nella console AWS o tramite EFS APIs.
Nota
aws-efs-csi-driver non è compatibile con le immagini dei contenitori basate su Windows.
Nota
Esiste un problema di memoria noto quando vol-metrics-opt-in(per l'emissione di parametri di volume) è abilitata a causa della DiskUsage
Amazon FSx per Lustre
Lustre è un file system parallelo ad alte prestazioni comunemente utilizzato nei carichi di lavoro che richiedono un throughput fino a centinaia GB/s e latenze inferiori al millisecondo per operazione. Viene utilizzato per scenari come la formazione sull'apprendimento automatico, la modellazione finanziaria, l'HPC e l'elaborazione video. Amazon FSx for Lustre
Puoi utilizzare i volumi di storage persistente Kubernetes supportati da FSx for Lustre utilizzando il driver CSI for Lustre di Amazon EKS o il FSx tuo cluster Kubernetes autogestito
Collegamento ad Amazon S3
Si consiglia di collegare un repository di dati a lungo termine altamente durevole che risiede su Amazon S3 al file system for FSx Lustre. Una volta collegati, i set di dati di grandi dimensioni vengono caricati lentamente in base alle esigenze da Amazon S3 ai file system for Lustre. FSx Puoi anche eseguire le analisi e i risultati su S3 e quindi eliminare il file system Lustre.
Scelta delle opzioni di implementazione e archiviazione corrette
FSx for Lustre offre diverse opzioni di implementazione. La prima opzione si chiama scratch e non replica i dati, mentre la seconda opzione è chiamata persistent e, come suggerisce il nome, persiste i dati.
La prima opzione (scratch) può essere utilizzata per ridurre il costo dell'elaborazione temporanea dei dati a breve termine. L'opzione di distribuzione persistente è progettata per lo storage a lungo termine che replica automaticamente i dati all'interno di una zona di disponibilità AWS. Supporta anche lo storage SSD e HDD.
Puoi configurare il tipo di implementazione desiderato in base ai parametri di Kubernetes del filesystem FSx for lustre. StorageClass Ecco un link che fornisce modelli di esempio.
Nota
Per carichi di lavoro sensibili alla latenza o carichi di lavoro che richiedono i massimi livelli di IOPS/throughput, dovresti scegliere lo storage SSD. Per carichi di lavoro incentrati sul throughput e non sensibili alla latenza, dovresti scegliere lo storage su HDD.
Abilita la compressione dei dati
È inoltre possibile abilitare la compressione dei dati sul file system specificando "LZ4" come tipo di compressione dei dati. Una volta abilitata, tutti i file appena scritti verranno automaticamente compressi su Lustre prima FSx di essere scritti su disco e decompressi quando vengono letti. LZ4 l'algoritmo di compressione dei dati è senza perdite, quindi i dati originali possono essere completamente ricostruiti dai dati compressi.
Puoi configurare il tipo di compressione dei dati come indicato nei parametri LZ4 di Kubernetes del file system FSx for lustre. StorageClass La compressione è disabilitata quando il valore è impostato su NONE, che è l'impostazione predefinita. Questo collegamento
Nota
Amazon FSx for Lustre non è compatibile con le immagini di container basate su Windows.
Amazon FSx per NetApp ONTAP
Amazon FSx for NetApp ONTAP
Amazon FSx for NetApp ONTAP supporta due livelli di storage: 1/livello primario e 2/livello di pool di capacità.
Il livello principale è un livello predisposto basato su SSD ad alte prestazioni per dati attivi e sensibili alla latenza. Il livello di pool di capacità completamente elastico è ottimizzato in termini di costi per i dati a cui si accede raramente, si ridimensiona automaticamente man mano che i dati vengono suddivisi su più livelli e offre petabyte di capacità praticamente illimitati. È possibile abilitare la compressione e la deduplicazione dei dati sullo storage con pool di capacità e ridurre ulteriormente la quantità di capacità di storage consumata dai dati. NetAppla FabricPool funzionalità nativa basata su policy monitora continuamente i modelli di accesso ai dati, trasferendo automaticamente i dati in modo bidirezionale tra i livelli di storage per ottimizzare prestazioni e costi.
NetAppAstra Trident fornisce un'orchestrazione dinamica dello storage utilizzando un driver CSI che consente ai cluster Amazon EKS di gestire il ciclo di vita dei volumi persistenti supportati PVs da Amazon per i file system ONTAP. FSx NetApp Per iniziare, consulta Use Astra Trident with Amazon FSx for NetApp ONTAP
Altre considerazioni
Riduci al minimo le dimensioni dell'immagine del contenitore
Una volta implementati i contenitori, le immagini dei contenitori vengono memorizzate nella cache dell'host come livelli multipli. Riducendo le dimensioni delle immagini, è possibile ridurre la quantità di storage richiesta sull'host.
Utilizzando fin dall'inizio immagini di base ridotte, come immagini scratch o immagini di container senza distribuzione
È inoltre consigliabile prendere in considerazione l'utilizzo di strumenti open source, come Slim.ai
Più livelli di pacchetti, strumenti, dipendenze delle applicazioni e librerie possono facilmente aumentare le dimensioni dell'immagine del contenitore. Utilizzando build in più fasi, potete copiare selettivamente gli artefatti da una fase all'altra, escludendo tutto ciò che non è necessario dall'immagine finale. Puoi consultare altre best practice per la creazione di immagini qui.
Un'altra cosa da considerare è per quanto tempo conservare le immagini memorizzate nella cache. Potresti voler pulire le immagini obsolete dalla cache delle immagini quando viene utilizzata una certa quantità di disco. In questo modo sarà possibile assicurarsi di disporre di spazio sufficiente per il funzionamento dell'host. Per impostazione predefinita, il kubelet
Per configurare le opzioni per il contenitore inutilizzato e la raccolta dei rifiuti di immagini, ottimizza il kubelet utilizzando un file di configurazioneKubeletConfiguration
Puoi saperne di più nella documentazione di Kubernetes.