{"id":71858,"date":"2020-02-28T21:00:08","date_gmt":"2020-02-28T18:00:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/patterny-hraneniya-dannyh-v-kubernetes"},"modified":"2020-03-03T16:14:09","modified_gmt":"2020-03-03T13:14:09","slug":"patterny-hraneniya-dannyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Pattern di archiviazione dei dati in Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\"><img decoding=\"async\" alt=\"Pattern di archiviazione dei dati in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nCiao, Habr!<\/p>\n<p>Ricordiamo che \u00e8 stata pubblicata un'altra interessante e utile <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">libro<\/a><\/noindex> \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">I pattern<\/a><\/noindex>&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">in pieno svolgimento<\/a><\/noindex>. Oggi ti proponiamo di leggere un articolo del blog di MinIO, che riassume le tendenze e le specifiche dei pattern di archiviazione dati in Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes ha cambiato fondamentalmente i tradizionali pattern di sviluppo e distribuzione delle applicazioni. Ora il team pu\u00f2 impiegare solo pochi giorni per sviluppare, testare e distribuire un'applicazione \u2013 in ambienti diversi, il tutto all'interno dei cluster Kubernetes. Tale lavoro con le tecnologie delle generazioni precedenti richiedeva di solito settimane, se non mesi.<\/p>\n<p>Questa accelerazione \u00e8 stata possibile grazie all'astrazione fornita da Kubernetes, ovvero al fatto che Kubernetes gestisce autonomamente l'interazione con i dettagli a basso livello delle macchine fisiche o virtuali, permettendo agli utenti di dichiarare tra gli altri parametri la CPU desiderata, la quantit\u00e0 di memoria necessaria e il numero di istanze dei contenitori. Poich\u00e9 un'enorme comunit\u00e0 \u00e8 coinvolta nel supporto di Kubernetes e l'uso di Kubernetes continua ad espandersi, esso guida con ampio margine tra tutte le piattaforme di orchestrazione dei contenitori.<\/p>\n<p><i><b>Con l'espansione dell'uso di Kubernetes cresce anche la confusione riguardo ai modelli di archiviazione dei dati utilizzati.<\/b><\/i>.<\/p>\n<p>In un contesto di forte concorrenza per un pezzo di torta in Kubernetes (cio\u00e8, per lo storage dei dati), quando si parla di archiviazione dei dati, il segnale qui si perde in un forte rumore.<br \/>\nKubernetes incarna un modello moderno per lo sviluppo, il deployment e la gestione delle applicazioni. Questo modello all'avanguardia separa lo storage dei dati dall'elaborazione. Per comprendere appieno questa separazione nel contesto di Kubernetes, \u00e8 fondamentale anche capire cosa intendiamo per applicazioni a stato e senza stato, e come questo si integra con lo storage dei dati. Qui, l'approccio REST API utilizzato da S3 offre vantaggi chiari rispetto all'approccio POSIX\/CSI comune in altre soluzioni.<\/p>\n<p>In questo articolo parleremo dei modelli di storage dei dati in Kubernetes e affronteremo la questione delle applicazioni a stato e senza stato, per comprendere bene le differenze tra di esse e perch\u00e9 queste differenze siano importanti. Successivamente, discuteremo le applicazioni e i modelli di storage dati utilizzati in esse alla luce delle migliori pratiche per il lavoro con i container e Kubernetes.<\/p>\n<h4>Container senza stato<\/h4>\n<p>\nI contenitori sono per loro natura leggeri ed efimeri. Possono essere facilmente fermati, rimossi o distribuiti su un altro nodo - il tutto richiede solo pochi secondi. In un grande sistema di orchestrazione dei contenitori, queste operazioni avvengono continuamente e gli utenti nemmeno notano tali cambiamenti. Tuttavia, i spostamenti sono possibili solo se il contenitore non ha dipendenze dal nodo su cui si trova. Si dice che tali contenitori funzionino <i>senza stato<\/i>.<\/p>\n<h4>Contenitori con stato<\/h4>\n<p>\nSe un contenitore memorizza dati su dispositivi collegati localmente (o su un dispositivo di blocco), lo storage dei dati deve essere spostato su un nuovo nodo insieme al contenitore stesso in caso di guasto. Questo \u00e8 importante, altrimenti l'applicazione in esecuzione nel contenitore non potr\u00e0 funzionare correttamente, poich\u00e9 deve accedere ai dati salvati su supporti locali. Si dice che tali contenitori funzionino <i>con stato<\/i>.<\/p>\n<p>Dal punto di vista tecnico, i contenitori con stato possono essere spostati anche su altri nodi. Di solito, questo \u00e8 garantito tramite sistemi di archiviazione distribuiti o storage di rete a blocchi collegati a tutti i nodi su cui operano i contenitori. In questo modo, i contenitori ottengono accesso ai volumi per la persistenza dei dati, e le informazioni sono memorizzate su dischi distribuiti in tutta la rete. Questo metodo lo chiamer\u00f2 \"<i>approccio ai contenitori con stato<\/i>\", e d'ora in poi lo designer\u00f2 in questo modo per coerenza.<\/p>\n<p><img decoding=\"async\" alt=\"Pattern di archiviazione dei dati in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel tipico approccio ai contenitori con stato, tutti i pod delle applicazioni si collegano a un\u2019unica file system distribuito \u2013 si crea una sorta di storage condiviso, dove sono conservati tutti i dati delle applicazioni. Pur essendo possibili alcune variazioni, questo \u00e8 un approccio di alto livello.<\/p>\n<p>Ora, vediamo perch\u00e9 l'approccio ai contenitori con stato nel mondo orientato al cloud \u00e8 considerato un antipattern.<\/p>\n<h4>Progettazione di applicazioni orientate al cloud<\/h4>\n<p>\nTradizionalmente, le applicazioni utilizzavano database per lo storage strutturato delle informazioni e dischi locali o sistemi di file distribuiti per archiviare tutti i dati non strutturati o persino semistrutturati. Con l'aumento dei volumi di dati non strutturati, gli sviluppatori hanno compreso che POSIX era eccessivamente \"verbose\", comportando costi significativi e, in ultima analisi, ostacolando le prestazioni delle applicazioni quando si passava a realmente grandi scalabilit\u00e0.<\/p>\n<p>Questo ha principalmente contribuito all'emergere di un nuovo standard per lo storage dei dati, ossia i sistemi di storage orientati al cloud, che operano prevalentemente su basi di REST API e liberano l'applicazione dalla pesante gestione dello storage locale. In questo caso, l'applicazione si trova effettivamente a operare in modalit\u00e0 senza stato (poich\u00e9 lo stato \u00e8 conservato in storage remoto). Le moderne applicazioni sono progettate fin dall'inizio tenendo conto di questo fattore. In generale, qualsiasi applicazione moderna che gestisce dati di vario tipo (log, metadati, blob, ecc.) \u00e8 costruita secondo la paradigmatica orientata al cloud, dove lo stato viene trasferito in un sistema software appositamente designato per la sua conservazione. <\/p>\n<p><i><b>L'approccio containerizzato con stato fa retrocedere tutta questa paradigmatica esattamente a dove era iniziata! <\/b><\/i><\/p>\n<p>Quando si utilizzano le interfacce POSIX per archiviare i dati, le applicazioni funzionano come se stessero salvando lo stato e, per questo motivo, si allontanano dai principi fondamentali della progettazione cloud-oriented, cio\u00e8 dalla possibilit\u00e0 di variare le dimensioni dei flussi di lavoro dell'applicazione in base al carico in entrata, di spostarsi su un nuovo nodo non appena il nodo attuale fallisce, e cos\u00ec via.<\/p>\n<p>Esaminando pi\u00f9 da vicino questa situazione, scopriamo che nella scelta della soluzione per l'archiviazione dei dati ci troviamo ripetutamente di fronte al dilemma \"POSIX contro REST API\", MA con un ulteriore aggravamento dei problemi legati a POSIX, dovuto alla natura distribuita degli ambienti Kubernetes. In particolare,<\/p>\n<ul>\n<li><b>POSIX \u00e8 chiacchierone<\/b>: la semantica POSIX richiede di associare a ogni operazione metadati e descrittori di file, che aiutano a mantenere lo stato dell'operazione. Questo porta a costi significativi, privi di reale valore. Le API per lo storage di oggetti, in particolare l'API S3, hanno eliminato questi requisiti, consentendo all'applicazione di eseguire l'operazione e poi \"dimenticare\" la chiamata. La risposta del sistema di archiviazione indica se l'azione \u00e8 stata eseguita con successo o meno. In caso di fallimento, l'applicazione pu\u00f2 riprovare.<\/li>\n<li><b>Limitazioni di rete<\/b>: In un sistema distribuito, si intende che possono esistere molteplici applicazioni che cercano di scrivere dati su un unico supporto allegato. Pertanto, non solo le applicazioni competono tra loro per la larghezza di banda (per inviare dati al supporto), ma anche il sistema di archiviazione stesso competir\u00e0 per questa larghezza di banda, distribuendo i dati attraverso i dischi fisici. A causa della verbosit\u00e0 di POSIX, il numero di chiamate di rete aumenta di diversi ordini di grandezza. D'altra parte, l'API S3 garantisce una chiara separazione delle chiamate di rete tra quelle che provengono dal client al server e quelle che avvengono all'interno del server.<\/li>\n<li><b>Sicurezza<\/b>: Il modello di sicurezza POSIX \u00e8 progettato per richiedere un'attiva partecipazione umana: gli amministratori configurano livelli specifici di accesso per ciascun utente o gruppo. Questa paradossi \u00e8 difficile da adattare a un mondo orientato al cloud. Le applicazioni moderne si basano su modelli di sicurezza legati alle API, in cui i diritti di accesso sono definiti come un insieme di politiche, con account di servizio, credenziali temporanee, ecc.<\/li>\n<li><b>Gestibilit\u00e0<\/b>: I container con stato implicano costi specifici legati alla gestione. Si tratta della sincronizzazione dell'accesso parallelo ai dati e della garanzia della coerenza dei dati; tutto questo richiede di considerare attentamente quali schemi di accesso ai dati adottare. \u00c8 necessario installare, monitorare e configurare programmi extra, senza contare gli sforzi aggiuntivi richiesti per lo sviluppo.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Interfaccia del contenitore per lo storage dei dati<\/h4>\n<p>\nMentre l'interfaccia del contenitore per lo storage dei dati (CSI) ha notevolmente semplificato la diffusione del livello dei volumi di Kubernetes, trasferendoli parzialmente a fornitori di archiviazione esterni, ha anche accidentalmente contribuito a rafforzare la convinzione che l'approccio contenitorizzato con stato rappresenti il metodo raccomandato per l'archiviazione dei dati in Kubernetes.<\/p>\n<p>CSI \u00e8 stato sviluppato come standard per la fornitura di sistemi di archiviazione dei dati a blocchi e file per applicazioni legacy quando si lavora con Kubernetes. Come mostrato in questo articolo, l'unica situazione in cui l'approccio contenitorizzato con stato (e CSI nella sua forma attuale) \u00e8 sensato \u00e8 quando l'applicazione stessa \u00e8 un sistema legacy, dove non \u00e8 possibile aggiungere il supporto per l'API di archiviazione a oggetti.<\/p>\n<p>\u00c8 importante comprendere che, utilizzando CSI nella sua forma attuale, ovvero montando volumi lavorando con applicazioni moderne, ci troveremo ad affrontare pi\u00f9 o meno gli stessi problemi che si sono verificati nei sistemi dove l'archiviazione dei dati era organizzata in stile POSIX.<\/p>\n<h4>Un approccio di qualit\u00e0 superiore<\/h4>\n<p>\nIn questo caso, \u00e8 importante capire che la maggior parte delle applicazioni non \u00e8 intrinsecamente progettata per lavorare con stato o senza stato. Questo comportamento dipende dall'architettura generale del sistema e dalle specifiche scelte fatte durante il design. Parliamo un po' delle applicazioni a stato.<\/p>\n<p>In linea di principio, tutti i dati delle applicazioni possono essere suddivisi in diversi ampi tipi:<\/p>\n<ul>\n<li>Dati di log<\/li>\n<li>Dati di timestamp<\/li>\n<li>Dati delle transazioni<\/li>\n<li>Metadati<\/li>\n<li>Immagini dei contenitori<\/li>\n<li>Dati blob (oggetti binari di grandi dimensioni)<\/li>\n<\/ul>\n<p>\nTutti questi tipi di dati sono ben supportati sulle moderne piattaforme di archiviazione dati, e ci sono diverse piattaforme orientate al cloud progettate per fornire dati in ciascuno di questi formati specifici. Ad esempio, i dati delle transazioni e i metadati possono risiedere in un moderno database cloud-oriented come CockroachDB, YugaByte, ecc. Le immagini dei contenitori o i dati blob possono essere memorizzati in un registro docker basato su MinIO. I dati dei timestamp possono essere conservati in un database di serie temporali, come InfluxDB, ecc. Non approfondiamo qui i dettagli di ciascun tipo di dato e delle relative applicazioni, ma l'idea generale \u00e8 di evitare la memorizzazione persistente dei dati basata sul montaggio locale dei dischi.<\/p>\n<p><img decoding=\"async\" alt=\"Pattern di archiviazione dei dati in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInoltre, spesso si rivela efficace fornire un livello di caching temporaneo, che funge da una sorta di archivio per i file temporanei delle applicazioni, ma le applicazioni non devono dipendere da questo livello come fonte di verit\u00e0.<\/p>\n<h4>Archiviazione per applicazioni con stato mantenuto<\/h4>\n<p>\nSebbene nella maggior parte dei casi sia utile mantenere le applicazioni senza stato, quelle progettate per memorizzare dati \u2013 come database, archivi di oggetti, archivi di chiavi e valori \u2013 devono mantenere lo stato. Analizziamo perch\u00e9 queste applicazioni vengono implementate su Kubernetes. Come esempio, prendiamo MinIO, ma principi simili si applicano a qualsiasi altro grande sistema di archiviazione cloud-oriented.<\/p>\n<p>Le applicazioni orientate al cloud sono progettate per massimizzare l'efficienza nell'utilizzo della flessibilit\u00e0 tipica dei container. Ci\u00f2 significa che non ci sono assunzioni sulla tipologia di ambiente in cui verranno implementate. Ad esempio, MinIO utilizza un meccanismo interno di codifica ridondante (erasure coding) che conferisce al sistema la resilienza necessaria per rimanere operativo anche in caso di guasto della met\u00e0 dei dischi. Inoltre, MinIO gestisce l'integrit\u00e0 e la sicurezza dei dati mediante un proprio sistema di hashing e crittografia lato server.<\/p>\n<p>Per queste applicazioni orientate al cloud, i volumi persistenti locali (PV) sono la soluzione pi\u00f9 pratica per l'archiviazione di backup. Un PV locale offre la possibilit\u00e0 di memorizzare dati grezzi, mentre le applicazioni che operano su questi PV raccolgono autonomamente informazioni che consentono di scalare i dati e gestire le crescenti esigenze relative ai dati.<\/p>\n<p>Questo approccio \u00e8 molto pi\u00f9 semplice e scalabile rispetto a PV basato su CSI, che introducono nel sistema i propri livelli di gestione dei dati e ridondanza; il problema \u00e8 che questi livelli di solito confliggono con le applicazioni progettate secondo il principio di mantenimento dello stato.<\/p>\n<h4>Un passo deciso verso il distacco dei dati dai calcoli<\/h4>\n<p>\nIn questo articolo abbiamo parlato di come le applicazioni si stanno orientando verso il funzionamento senza mantenimento dello stato, o in altre parole, separando la memorizzazione dei dati dai calcoli su di essi. In conclusione, vediamo alcuni esempi reali di questa tendenza.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, la celebre piattaforma per l'analisi dei dati, \u00e8 tradizionalmente stata utilizzata con mantenimento dello stato e distribuzione nel file system HDFS. Tuttavia, con il passaggio di Spark a un mondo orientato al cloud, questa piattaforma \u00e8 sempre pi\u00f9 utilizzata senza mantenimento dello stato utilizzando `s3a`. Spark utilizza s3a per trasferire lo stato ad altri sistemi, mentre i contenitori stessi di Spark operano completamente senza mantenimento dello stato. Altri grandi attori aziendali nel campo dell'analisi dei big data, in particolare, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vertica.com\/docs\/9.2.x\/HTML\/Content\/Authoring\/Eon\/Architecture.htm\">Vertica.<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/min.io\/resources\/docs\/Teradata-solution-brief.pdf\">Teradata<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.pivotal.io\/partners\/minio-greenplum\/using.html\">Greenplum<\/a><\/noindex> si occupano anche della separazione tra archiviazione dei dati e calcolo.<\/p>\n<p>Pattern simili si possono osservare anche su altre grandi piattaforme analitiche, tra cui Presto, Tensorflow per R, Jupyter. Esportando lo stato in sistemi di archiviazione dati cloud remoti, diventa molto pi\u00f9 facile gestire e scalare la tua applicazione. Inoltre, questo contribuisce alla portabilit\u00e0 dell'applicazione in diversi ambienti.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71859,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-28T18:00:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Pattern di archiviazione dei dati in Kubernetes | ProHoster","description":"Ciao, Habr! Ti ricordiamo che \u00e8 uscito un altro libro estremamente interessante e utile sui pattern di Kubernetes. Tutto \u00e8 iniziato con \"Pattern\" di Brendan Burns, e, a dire il vero, il nostro lavoro in questo segmento \u00e8 molto attivo. Oggi ti proponiamo di leggere un articolo dal blog di MinIO, che espone brevemente le tendenze e le specificit\u00e0 dei pattern di archiviazione dei dati in Kubernetes. Kubernetes fondamentale per","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-28T18:00:08+00:00","article:modified_time":"2020-03-03T13:14:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71858","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:55:27","updated":"2022-09-27 18:57:08"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}