{"id":82244,"date":"2020-05-20T13:42:45","date_gmt":"2020-05-20T11:42:45","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov"},"modified":"2020-05-20T13:42:45","modified_gmt":"2020-05-20T11:42:45","slug":"luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","title":{"rendered":"Le migliori pratiche di Kubernetes. Creazione di piccoli container","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/21d8807ed791f0b9ff81494cf1a373c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl primo passo per il deployment su Kubernetes \u00e8 posizionare la tua applicazione in un container. In questa serie esploreremo come creare un'immagine di un container piccolo e sicuro.<br \/>\nGrazie a Docker, la creazione di immagini di container non \u00e8 mai stata cos\u00ec semplice. Specifica un'immagine di base, aggiungi le tue modifiche e crea il container.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/f144351cc82d46cf3f4a518c6e11faa3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnche se questo approccio \u00e8 ottimo per cominciare, l'uso delle immagini di base predefinite pu\u00f2 portare a un funzionamento non sicuro con grandi immagini piene di vulnerabilit\u00e0.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Inoltre, la maggior parte delle immagini Docker utilizza come immagine di base Debian o Ubuntu, e anche se questo garantisce un'ottima compatibilit\u00e0 e una facile adattabilit\u00e0 (il file Docker richiede solo due righe di codice), le immagini di base possono aggiungere centinaia di megabyte di carico aggiuntivo al tuo container. Ad esempio, un semplice file di un'applicazione Node.js 'hello-world' occupa circa 700 megabyte, mentre la dimensione vera e propria della tua applicazione \u00e8 solo di pochi megabyte.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/8093421f0f0f61b9daedf8e9530bbd3e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, tutto questo carico aggiuntivo \u00e8 una perdita di spazio digitale e un ottimo nascondiglio per vulnerabilit\u00e0 e errori di sicurezza. Perci\u00f2, consideriamo due modi per ridurre le dimensioni dell'immagine del container. <\/p>\n<p>Il primo consiste nell'uso di immagini di base di dimensioni ridotte, il secondo nell'uso del pattern di progettazione Builder Pattern. Utilizzare immagini di base pi\u00f9 piccole \u00e8 probabilmente il modo pi\u00f9 semplice per ridurre le dimensioni del tuo container. \u00c8 probabile che il linguaggio o lo stack che utilizzi fornisca un'immagine originale dell'applicazione di dimensioni molto pi\u00f9 piccole rispetto all'immagine predefinita. Diamo un'occhiata al nostro container Node.js. <\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/df3f744a565465b56adcec6a1c32e501.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer impostazione predefinita, la dimensione dell'immagine di base node:8 in Docker \u00e8 di 670 MB, mentre la dimensione di node:8-alpine \u00e8 di soli 65 MB, ovvero 10 volte inferiore. Utilizzando un'immagine di base pi\u00f9 piccola come Alpine, ridurrai notevolmente la dimensione del tuo contenitore. Alpine \u00e8 una distribuzione Linux leggera e piccola, molto popolare tra gli utenti di Docker, poich\u00e9 \u00e8 compatibile con molte applicazioni pur mantenendo dimensioni contenitoriali ridotte. A differenza dell'immagine standard di Docker \"node\", \"node:alpine\" rimuove molti file di servizio e programmi, lasciando solo quelli necessari per eseguire la tua applicazione.<\/p>\n<p>Per passare a un'immagine di base pi\u00f9 piccola, aggiorna semplicemente il file Docker per iniziare a utilizzare la nuova immagine di base:<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/55a3b8e403bd34896018f92a81a3f251.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOra, a differenza della vecchia immagine onbuild, dovrai copiare il tuo codice nel contenitore e installare tutte le dipendenze. Nel nuovo file Docker, il contenitore inizia con l'immagine node:alpine, crea quindi una directory per il codice, installa le dipendenze tramite il gestore pacchetti NPM e infine esegue server.js.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/b41c36994fc18dc34fb970a38bc50c9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCon questo aggiornamento ottieni un contenitore di dimensioni dieci volte inferiori. Se il tuo linguaggio di programmazione o stack non dispone della funzione di riduzione dell'immagine di base, usa Alpine Linux. Ti offrir\u00e0 anche la possibilit\u00e0 di gestire completamente il contenuto del contenitore. Utilizzare immagini di base di piccole dimensioni \u00e8 un ottimo modo per creare rapidamente contenitori piccoli. Ma \u00e8 possibile ottenere ulteriori riduzioni utilizzando il Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/c9549f5879058d9734c174e8571b9069.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNei linguaggi interpretati, il codice sorgente viene prima passato all'interprete e poi eseguito direttamente. Nei linguaggi compilati, il codice sorgente viene prima convertito in codice compilato. Durante questo processo, la compilazione utilizza spesso strumenti che in realt\u00e0 non sono necessari per eseguire il codice. Ci\u00f2 significa che puoi rimuovere completamente questi strumenti dal contenitore finale. Per fare ci\u00f2, puoi utilizzare il Builder Pattern.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/9af4d11134c54cbdbd2b020cdf270429.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl codice viene creato nel primo contenitore e compilato. Quindi, il codice compilato viene confezionato nel contenitore finale senza compilatori e strumenti necessari per compilare questo codice. Passiamo attraverso questo processo con un'applicazione Go. Prima di tutto, passeremo dall'immagine onbuild a Alpine Linux.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/822b67eb28f94c50e7a40af1fe1bfea2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel nuovo file Docker, il contenitore inizia con l'immagine golang:alpine. Poi crea una directory per il codice, copia il codice sorgente, compila il sorgente e avvia l'applicazione. Questo contenitore \u00e8 molto pi\u00f9 piccolo rispetto al contenitore onbuild, ma contiene ancora il compilatore e altri strumenti Go che in realt\u00e0 non ci servono. Quindi, estraiamo semplicemente il programma compilato e mettiamolo nel nostro contenitore.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/094ac74a24cd723f83ddc34bee64e884.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPotresti notare qualcosa di strano in questo file Docker: contiene due righe FROM. La prima sezione, di 4 righe, appare esattamente come nel precedente file Docker, tranne per il fatto che utilizza la parola chiave AS per dare un nome a questa fase. Nella sezione successiva c'\u00e8 una nuova riga FROM, permettendo di iniziare una nuova immagine, mentre invece di utilizzare l'immagine golang:alpine come immagine di base utilizzeremo Raw alpine.<\/p>\n<p>Raw Alpine Linux non ha certificati SSL installati, il che porter\u00e0 al fallimento della maggior parte delle chiamate API via HTTPS, quindi installiamo alcuni certificati CA radice.<\/p>\n<p>E ora la parte interessante: per copiare il codice compilato dal primo contenitore al secondo, puoi semplicemente utilizzare il comando COPY, che si trova nella 5\u00aa riga della seconda sezione. Copier\u00e0 solo un file dell'applicazione e non toccher\u00e0 gli strumenti di servizio Go. Il nuovo file Docker multistadio conterr\u00e0 una immagine del contenitore di soli 12 megabyte, mentre l'immagine di base era di 700 megabyte, il che fa una grande differenza!<br \/>\nPertanto, utilizzare immagini di base pi\u00f9 piccole e il modello Builder \u00e8 un ottimo modo per creare contenitori di dimensioni molto inferiori senza molto lavoro.<br \/>\n\u00c8 possibile che, a seconda del stack dell'applicazione, ci siano modi aggiuntivi per ridurre le dimensioni dell'immagine e del contenitore, ma i contenitori piccoli hanno davvero un vantaggio misurabile? Esaminiamo due aspetti in cui i contenitori piccoli sono estremamente efficienti: sono le prestazioni e la sicurezza.<\/p>\n<p>Per valutare l'aumento della produttivit\u00e0, consideriamo la durata del processo di creazione del contenitore, l'inserimento nel registro (push) e l'estrazione successiva da esso (pull). Puoi vedere che un contenitore di dimensioni pi\u00f9 piccole ha un indiscutibile vantaggio rispetto a un contenitore di dimensioni maggiori.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/f48096cf875dbb34cb473f6296a2b601.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDocker memorizzer\u00e0 nella cache i layer, quindi le costruzioni successive verranno eseguite molto rapidamente. Tuttavia, in molti sistemi CI utilizzati per costruire e testare contenitori, i layer non vengono memorizzati nella cache, quindi c'\u00e8 un notevole risparmio di tempo. Come puoi vedere, il tempo di costruzione di un contenitore di grandi dimensioni, a seconda della potenza della tua macchina, varia da 34 a 54 secondi, mentre per un contenitore ridotto tramite il Builder Pattern \u00e8 compreso tra 23 e 28 secondi. Per operazioni di questo tipo, l'incremento della produttivit\u00e0 sar\u00e0 del 40-50%. Pertanto, pensa a quante volte crei e test di codice.<\/p>\n<p>Dopo che il contenitore \u00e8 stato costruito, devi inserire la sua immagine (push container image) nel registro dei contenitori per poi usarla nel tuo cluster Kubernetes. Ti consiglio di utilizzare il registro dei contenitori di Google.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/4c5426248c1e1ec6b0a36579db56c725.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUtilizzando Google Container Registry (GCR), paghi solo per lo storage 'grezzo' e per la rete, mentre non ci sono costi aggiuntivi per la gestione dei contenitori. \u00c8 riservato, sicuro e molto veloce. GCR utilizza molti accorgimenti per accelerare l'operazione di pull. Come puoi vedere, l'inserimento dell'immagine del contenitore Docker Container Image utilizzando go:onbuild, a seconda della potenza del computer, richieder\u00e0 dai 15 ai 48 secondi, mentre la stessa operazione con un contenitore di dimensioni minori richieder\u00e0 da 14 a 16 secondi, e per macchine meno potenti, il vantaggio in termini di velocit\u00e0 aumenta di 3 volte. Per macchine di grandi dimensioni, il tempo \u00e8 comunque simile, poich\u00e9 GCR utilizza una cache globale per la base di immagini condivisa, il che significa che non \u00e8 necessario caricarle affatto. Nei computer di bassa potenza, la CPU rappresenta il collo di bottiglia, quindi il vantaggio di utilizzare piccoli contenitori \u00e8 molto pi\u00f9 evidente.<\/p>\n<p>Se utilizzi GCR, ti consiglio vivamente di utilizzare Google Container Builder (GCB) come parte del tuo sistema di costruzione.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/cf97f8636dff16d5663225547bfb0701.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome potete vedere, il suo utilizzo consente di ottenere risultati significativamente migliori nella riduzione della durata dell'operazione Build+Push, rispetto anche a una macchina potente: in questo caso, il processo di costruzione e invio dei contenitori al host \u00e8 quasi raddoppiato in velocit\u00e0. Inoltre, ogni giorno ricevete 120 minuti di compilazione gratuitamente, il che nella maggior parte dei casi soddisfa le esigenze di creazione dei contenitori. <\/p>\n<p>Successivamente, arriva la metrica prestazionale pi\u00f9 importante: la velocit\u00e0 di estrazione o download dei contenitori Pull. E se non vi preoccupa molto il tempo impiegato per l'operazione push, la durata del processo pull influisce gravemente sulle prestazioni complessive del sistema. Supponiamo che abbiate un cluster di tre nodi e che uno di essi abbia un guasto. Se utilizzate un sistema di gestione, come Google Kubernetes Engine, esso sostituir\u00e0 automaticamente il nodo non funzionante con uno nuovo. Tuttavia, questo nuovo nodo sar\u00e0 completamente vuoto, e dovrete trasferirvi tutti i vostri contenitori affinch\u00e9 inizi a funzionare. Se l'operazione pull richiede troppo tempo, il vostro cluster lavorer\u00e0 con una minore produttivit\u00e0 per tutto quel tempo.<\/p>\n<p>Ci sono molti casi in cui pu\u00f2 verificarsi una situazione simile: aggiunta di un nuovo nodo al cluster, aggiornamento dei nodi o anche passaggio a un nuovo contenitore per il deployment. Pertanto, la minimizzazione del tempo di estrazione pull diventa un fattore cruciale. \u00c8 innegabile che un piccolo contenitore si scarichi molto pi\u00f9 rapidamente di uno grande. Se utilizzate pi\u00f9 contenitori in un cluster Kubernetes, il risparmio di tempo pu\u00f2 essere molto significativo.<\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/fb0dacb37e9732fe2954323ee171a723.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDate un'occhiata al confronto riportato: l'operazione pull con piccoli contenitori richiede da 4 a 9 volte meno tempo a seconda della potenza della macchina, rispetto alla stessa operazione utilizzando go:onbuild. Utilizzare immagini di base condivise di piccole dimensioni accelera notevolmente il tempo e la velocit\u00e0 con cui i nuovi nodi Kubernetes possono essere distribuiti e connessi a Internet.<\/p>\n<p>Esaminiamo la questione della sicurezza. Si ritiene che i contenitori di dimensioni pi\u00f9 piccole siano molto pi\u00f9 sicuri rispetto a quelli pi\u00f9 grandi, poich\u00e9 hanno una superficie di attacco minore. \u00c8 veramente cos\u00ec? Una delle funzionalit\u00e0 pi\u00f9 utili di Google Container Registry \u00e8 la possibilit\u00e0 di scansionare automaticamente i tuoi contenitori alla ricerca di vulnerabilit\u00e0. Qualche mese fa, ho creato sia contenitori onbuild che multi-stadio, quindi vediamo se ci sono punti vulnerabili. <\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/0ed3cd7bb8c8f5164e1115e9f1be39d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI risultati sono sbalorditivi: nel contenitore piccolo sono state trovate solo 3 vulnerabilit\u00e0 medie, mentre nel grande ci sono 16 vulnerabilit\u00e0 critiche e 376 altre vulnerabilit\u00e0. Se si esamina il contenuto del grande contenitore, si pu\u00f2 notare che la maggior parte dei problemi di sicurezza non ha nulla a che fare con la nostra applicazione, ma \u00e8 correlata a programmi che nemmeno utilizziamo. Pertanto, quando le persone parlano di una grande superficie di attacco, si riferiscono a questo. <\/p>\n<p><img decoding=\"async\" alt=\"Le migliori pratiche di Kubernetes. Creazione di piccoli container\" src=\"\/wp-content\/uploads\/2020\/05\/4a782f4a50153adc44042e9234357c02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa conclusione \u00e8 chiara: crea contenitori piccoli, poich\u00e9 offrono reali vantaggi in termini di prestazioni e sicurezza per il tuo sistema. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con spazi dei nomi<\/a><\/noindex><\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"wGz_cbtCiEA\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/wGz_cbtCiEA\/hqdefault.jpg\" alt=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Un po' di pubblicit\u00e0 \ud83d\ude42<\/h3>\n<p>\nGrazie per rimanere con noi. Ti piacciono i nostri articoli? Vuoi vedere pi\u00f9 contenuti interessanti? Supportaci effettuando un ordine o raccomandandoci a qualcuno. <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">VPS cloud per sviluppatori a partire da $4.99.<\/a><\/noindex>, <b>unica alternativa ai server entry-level, concepita da noi per te:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Tutta la verit\u00e0 sui VPS (KVM) E5-2697 v3 (6 Core) 10GB DDR4 480GB SSD 1Gbps a partire da $19 o come dividere correttamente un server?<\/a><\/noindex> (sono disponibili opzioni con RAID1 e RAID10, fino a 24 core e fino a 40GB DDR4).<\/p>\n<p><b>Dell R730xd a met\u00e0 prezzo nel data center Equinix Tier IV ad Amsterdam?<\/b> Solo da noi <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB a partire da $199<\/a><\/noindex> nei Paesi Bassi! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 a partire da $99!<\/b><\/b> Leggi di <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Come costruire un'infrastruttura di livello enterprise utilizzando server Dell R730xd E5-2650 v4 del valore di 9000 euro a pochi spiccioli?<\/a><\/noindex><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502052\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes \u2013 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Docker, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\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\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov\" \/>\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-05-20T11:42:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-20T11:42:45+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\udd47Best practices Kubernetes. Creazione di piccoli contenitori | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 | ProHoster","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-sozdanie-nebolshih-kontejnerov","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-05-20T11:42:45+00:00","article:modified_time":"2020-05-20T11:42:45+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82244","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 15:41:28","updated":"2022-09-28 11:52:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/82244","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=82244"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/82244\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/82245"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=82244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=82244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=82244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}