{"id":80076,"date":"2020-05-03T01:42:34","date_gmt":"2020-05-02T23:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt"},"modified":"2020-05-03T01:42:34","modified_gmt":"2020-05-02T23:42:34","slug":"proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota di traduzione.<\/b>: questo materiale proviene da un progetto educativo <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 risposta a una domanda comune nella progettazione di infrastrutture basate su Kubernetes. Speriamo che le descrizioni dettagliate dei pro e dei contro di ciascuna opzione aiutino a fare la scelta ottimale anche per il vostro progetto.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: lo stesso insieme di carichi di lavoro pu\u00f2 essere eseguito su pi\u00f9 grandi cluster (ogni cluster avr\u00e0 un gran numero di workload) o su molte piccole (con un numero ridotto di carichi in ciascun cluster).<\/p>\n<p>Di seguito \u00e8 riportata una tabella che valuta i pro e i contro di ciascun approccio:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando si utilizza Kubernetes come piattaforma per l\u2019esecuzione di applicazioni, sorgono spesso alcune domande fondamentali sulle sfumature della configurazione dei cluster:<\/p>\n<ul>\n<li> <i>Quanti cluster utilizzare?<\/i><\/li>\n<li> <i>Di quanto grande farli?<\/i><\/li>\n<li> <i>Cosa deve includere ogni cluster?<\/i><\/li>\n<\/ul>\n<p>\nIn questo articolo cercher\u00f2 di rispondere a tutte queste domande analizzando i pro e i contro di ciascun approccio.<\/p>\n<h2>Formulazione della domanda<\/h2>\n<p>\nCome creatore di software, \u00e8 probabile che stiate sviluppando ed eseguendo in parallelo molteplici applicazioni.<\/p>\n<p>Inoltre, \u00e8 probabile che molteplici istanze di queste applicazioni vengano eseguite in vari ambienti: per esempio, potrebbero essere <i>dev<\/i>, <i>test<\/i> e <i>prod<\/i>.<\/p>\n<p>Il risultato \u00e8 una vera e propria matrice di applicazioni e ambienti:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Applicazioni e ambienti<\/i><\/p>\n<p>Nell'esempio sopra sono rappresentate 3 applicazioni e 3 ambienti, che in totale forniscono 9 possibili varianti.<\/p>\n<p>Ogni istanza dell'applicazione rappresenta un'unit\u00e0 di distribuzione autosufficiente, con la quale \u00e8 possibile lavorare indipendentemente dalle altre.<\/p>\n<p><i>Si prega di notare che <b>istanza dell'applicazione<\/b> pu\u00f2 consistere in molteplici <b>componenti<\/b>, come frontend, backend, database, ecc. Nel caso di un'applicazione a microservizi, l'istanza includer\u00e0 tutti i microservizi.<\/i><\/p>\n<p>Di conseguenza, gli utenti di Kubernetes si pongono alcune domande:<\/p>\n<ul>\n<li> Vale la pena collocare tutte le istanze dell'applicazione in un unico cluster?<\/li>\n<li> Vale la pena creare un cluster separato per ogni istanza dell'applicazione?<\/li>\n<li> O, forse, dovremmo considerare una combinazione delle opzioni sopra menzionate?<\/li>\n<\/ul>\n<p>\nTutte queste opzioni sono del tutto praticabili, poich\u00e9 Kubernetes \u00e8 un sistema flessibile che non limita le possibilit\u00e0 dell'utente.<\/p>\n<p>Ecco alcune delle possibili soluzioni:<\/p>\n<ul>\n<li> un grande cluster condiviso;<\/li>\n<li> un gran numero di piccoli cluster specializzati;<\/li>\n<li> un cluster per ogni applicazione;<\/li>\n<li> un cluster per ogni ambiente.<\/li>\n<\/ul>\n<p>\nCome mostrato di seguito, i primi due approcci sono agli estremi opposti della gamma di opzioni:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Da alcuni grandi cluster (a sinistra) a molti piccoli (a destra)<\/i><\/p>\n<p><i>In generale, si considera che un cluster sia \"pi\u00f9 grande\" di un altro se ha una somma maggiore di nodi e pod. Ad esempio, un cluster con 10 nodi e 100 pod \u00e8 pi\u00f9 grande di un cluster con 1 nodo e 10 pod.<\/i><\/p>\n<p>Bene, iniziamo!<\/p>\n<h2>1. Un grande cluster comune<\/h2>\n<p>\nLa prima opzione \u00e8 quella di ospitare tutti i carichi di lavoro in un unico cluster:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un grande cluster<\/i><\/p>\n<p>In questo approccio, il cluster \u00e8 utilizzato come piattaforma infrastrutturale universale <b>\u2014 tutto ci\u00f2 di cui hai bisogno \u00e8 semplicemente distribuito nel cluster Kubernetes esistente.<\/b> I namespace<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Namespace<\/a><\/noindex> Esaminiamo i pro e i contro di questo approccio.<\/i><\/p>\n<p><i>+ Utilizzo efficace delle risorse<\/i><\/p>\n<h3>Nel caso di un cluster unico, richieder\u00e0 solo una copia di tutte le risorse necessarie per avviare e gestire il cluster Kubernetes.<\/h3>\n<p>\nAd esempio, questo \u00e8 valido per i nodi master. Di solito, ci sono 3 nodi master per ogni cluster Kubernetes, quindi per un unico cluster il numero rimarr\u00e0 lo stesso (in confronto, 10 cluster richiederanno 30 nodi master).<\/p>\n<p>La sottigliezza sopra menzionata si applica anche ad altri servizi che operano a livello di cluster, come bilanciatori di carico, controller Ingress, sistemi di autenticazione, logging e monitoraggio.<\/p>\n<p>In un cluster unico, tutti questi servizi possono essere utilizzati immediatamente per tutti i carichi di lavoro (non \u00e8 necessario crearne copie, come nel caso di pi\u00f9 cluster).<\/p>\n<p>+ Economicit\u00e0<\/p>\n<h3>Di conseguenza, un minor numero di cluster di solito \u00e8 pi\u00f9 economico, poich\u00e9 non ci sono costi per risorse ridondanti.<\/h3>\n<p>\nQuesto \u00e8 particolarmente vero per i nodi master, che possono costare significativamente, indipendentemente dalla modalit\u00e0 di distribuzione (on-premises o nel cloud).<\/p>\n<p>Alcuni servizi Kubernetes gestiti, come<\/p>\n<p>Google Kubernetes Engine (GKE) <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Azure Kubernetes Service (AKS)<\/a><\/noindex> o <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, forniscono uno strato di gestione gratuitamente. In questo caso, la questione dei costi \u00e8 meno urgente.<\/p>\n<p>Esistono anche servizi gestiti che addebitano una tariffa fissa per il funzionamento di ciascun cluster Kubernetes (ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Amministrazione efficace<\/h3>\n<p>\nGestire un singolo cluster \u00e8 pi\u00f9 semplice che gestirne diversi.<\/p>\n<p>L'amministrazione pu\u00f2 includere le seguenti attivit\u00e0:<\/p>\n<ul>\n<li> aggiornamento della versione di Kubernetes;<\/li>\n<li> configurazione della pipeline CI\/CD;<\/li>\n<li> installazione del plugin CNI;<\/li>\n<li> configurazione del sistema di autenticazione degli utenti;<\/li>\n<li> installazione del controller di accesso;<\/li>\n<\/ul>\n<p>\ne molte altre\u2026<\/p>\n<p>Nel caso di un singolo cluster, dovrai occuparti di tutto questo solo una volta.<\/p>\n<p>Per pi\u00f9 cluster, dovrai ripetere le operazioni pi\u00f9 volte, il che probabilmente richieder\u00e0 qualche automazione dei processi e strumenti per garantire sistematicit\u00e0 e uniformit\u00e0.<\/p>\n<p><i>E ora alcune parole sui contro.<\/i><\/p>\n<h3>\u2212 Punto unico di guasto<\/h3>\n<p>\nIn caso di guasto <i>dell'unico<\/i> cluster, tutte le <i>tutti<\/i> carichi di lavoro smetteranno di funzionare!<\/p>\n<p>Ci sono molteplici scenari in cui qualcosa pu\u00f2 andare storto:<\/p>\n<ul>\n<li> un aggiornamento di Kubernetes potrebbe portare effetti collaterali inaspettati;<\/li>\n<li> un componente del cluster (ad esempio, il plugin CNI) inizia a funzionare in modo diverso da quanto previsto;<\/li>\n<li> uno dei componenti del cluster \u00e8 configurato in modo errato;<\/li>\n<li> un guasto nell'infrastruttura sottostante.<\/li>\n<\/ul>\n<p>\nUn tale incidente pu\u00f2 causare danni significativi a tutti i carichi di lavoro ospitati nel cluster condiviso.<\/p>\n<h3>\u2212 Mancanza di isolamento rigoroso<\/h3>\n<p>\nLavorare in un cluster condiviso significa che le applicazioni condividono l'hardware, le capacit\u00e0 di rete e il sistema operativo sui nodi del cluster.<\/p>\n<p>In un certo senso, due container con due applicazioni diverse in esecuzione sullo stesso nodo sono simili a due processi in esecuzione sulla stessa macchina sotto lo stesso kernel del sistema operativo.<\/p>\n<p><i>I container Linux offrono una certa forma di isolamento, ma non \u00e8 cos\u00ec forte come quella fornita, ad esempio, dalle macchine virtuali. In sostanza, il processo in un container \u00e8 lo stesso processo eseguito nel sistema operativo dell'host.<\/i><\/p>\n<p>Questo pu\u00f2 diventare un problema dal punto di vista della sicurezza: tale organizzazione consente teoricamente a applicazioni non correlate di interagire tra di loro (intenzionalmente o accidentalmente).<\/p>\n<p>Inoltre, tutti i carichi di lavoro nel cluster Kubernetes condividono alcuni servizi comuni al cluster, come <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 consente alle applicazioni di trovare i Service di altre applicazioni nel cluster.<\/p>\n<p><i>Tutti i punti sopra menzionati possono avere un significato diverso a seconda dei requisiti di sicurezza delle applicazioni.<\/i><\/p>\n<p>Kubernetes offre vari strumenti per prevenire problemi nel sistema di sicurezza, come <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. Tuttavia, per configurarli correttamente \u00e8 necessaria una certa esperienza, inoltre non sono in grado di chiudere completamente tutte le falle nella sicurezza.<\/p>\n<p>\u00c8 importante ricordare sempre che Kubernetes \u00e8 stato originariamente progettato per <i>la condivisione<\/i>, e non per <i>l'isolamento e la sicurezza<\/i>.<\/p>\n<h3>\u2212 Mancanza di multi-tenancy rigida<\/h3>\n<p>\nConsiderando l'abbondanza di risorse comuni nel cluster Kubernetes, ci sono molti modi in cui le diverse applicazioni possono \"calpestarsi\" a vicenda.<\/p>\n<p>Ad esempio, un'applicazione potrebbe monopolizzare una risorsa comune (come la CPU o la memoria) e privare altre applicazioni che operano sullo stesso nodo dell'accesso ad essa.<\/p>\n<p>Kubernetes fornisce vari meccanismi di controllo per tale comportamento, come <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">richieste di risorse e limiti<\/a><\/noindex> <i>(vedi anche l'articolo \u201c<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> Limiti CPU e throttling aggressivo in Kubernetes <\/a><\/noindex>\u00bb \u2014 nota del traduttore.)<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Tuttavia, come nel caso della sicurezza, la loro configurazione \u00e8 piuttosto complessa e non possono prevenire completamente tutti gli effetti collaterali imprevisti.<\/p>\n<h3>\u2212 Un gran numero di utenti<\/h3>\n<p>\nNel caso di un singolo cluster, \u00e8 necessario concedere l'accesso a molte persone. E pi\u00f9 alto \u00e8 il loro numero, maggiore \u00e8 il rischio che possano \"rompere\" qualcosa.<\/p>\n<p>All'interno del cluster \u00e8 possibile controllare chi e cosa pu\u00f2 fare tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">gestione degli accessi basata su ruoli (RBAC)<\/a><\/noindex> <i>(vedi l'articolo \u201c<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Utenti e autorizzazione RBAC in Kubernetes <\/a><\/noindex>\u00bb \u2014 nota del traduttore.)<\/i>. Tuttavia, ci\u00f2 non impedir\u00e0 agli utenti di \"rompere\" qualcosa all'interno della propria area di responsabilit\u00e0.<\/p>\n<h3>\u2212 I cluster non possono crescere all'infinito<\/h3>\n<p>\nUn cluster utilizzato per tutti i carichi di lavoro sar\u00e0 probabilmente piuttosto grande (per numero di nodi e pod).<\/p>\n<p>Ma qui emerge un altro problema: i cluster in Kubernetes non possono crescere all'infinito.<\/p>\n<p>Esiste un limite teorico alla dimensione del cluster. In Kubernetes, questo \u00e8 di circa <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 nodi, 150 mila pod e 300 mila container<\/a><\/noindex>.<\/p>\n<p>Tuttavia, nella vita reale, i problemi possono iniziare molto prima, ad esempio, con soli <noindex><a rel=\"nofollow\" href=\"https:\/\/events19.lfasiallc.com\/wp-content\/uploads\/2017\/11\/BoF_-Not-One-Size-Fits-All-How-to-Size-Kubernetes-Clusters_Guang-Ya-Liu-_-Sahdev-Zala.pdf\">500 nodi<\/a><\/noindex>.<\/p>\n<p>Il fatto \u00e8 che i grandi cluster esercitano un alto carico sul layer di controllo di Kubernetes. In altre parole, per mantenere il cluster operativo ed utilizzare efficacemente le risorse, \u00e8 necessaria un'attenta configurazione.<\/p>\n<p><i>Questo problema \u00e8 esaminato nell'articolo corrispondente sul blog originale intitolato \"<noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/kubernetes-node-size\">Architecting Kubernetes clusters \u2014 choosing a worker node size<\/a><\/noindex>\u00bb.<\/i><\/p>\n<p><i>Ma consideriamo l'approccio opposto: molti piccoli cluster.<\/i><\/p>\n<h2>2. Molti piccoli cluster specializzati<\/h2>\n<p>\nIn questo approccio, utilizzi un cluster separato per ogni elemento distribuito:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Molti piccoli cluster<\/i><\/p>\n<p>Ai fini di questo articolo, l' <i>elemento distribuito<\/i> si riferisce a un'istanza dell'applicazione, ad esempio, la versione dev di un'applicazione separata.<\/p>\n<p>In questa strategia, Kubernetes \u00e8 utilizzato come un <b>ambiente di esecuzione<\/b> specializzato per istanze separate dell'applicazione.<\/p>\n<p><i>+ Utilizzo efficace delle risorse<\/i><\/p>\n<h3>+ Raggio d'azione limitato<\/h3>\n<p>\nIn caso di \"guasto\" del cluster, le conseguenze negative si limitano solo ai carichi di lavoro che erano stati distribuiti in quel cluster. Tutti gli altri workload rimangono intatti.<\/p>\n<h3>+ Isolamento<\/h3>\n<p>\nI carichi di lavoro collocati in cluster individuali non condividono risorse comuni, come CPU, memoria, sistema operativo, rete o altri servizi.<\/p>\n<p>Di conseguenza, otteniamo un'rigida isolamento tra applicazioni non correlate, il che pu\u00f2 giovare alla loro sicurezza.<\/p>\n<h3>+ Numero limitato di utenti<\/h3>\n<p>\nConsiderando che ogni cluster contiene solo un set limitato di carichi di lavoro, si riduce il numero di utenti che vi accedono.<\/p>\n<p>Meno persone hanno accesso al cluster, minore \u00e8 il rischio che qualcosa \"si rompa\".<\/p>\n<p><i>Esaminiamo i contro.<\/i><\/p>\n<h3>- Utilizzo inefficiente delle risorse<\/h3>\n<p>\nCome accennato in precedenza, ogni cluster Kubernetes richiede un certo set di risorse di gestione: nodi master, componenti del layer di controllo, soluzioni per il monitoraggio e la registrazione.<\/p>\n<p>In caso di un alto numero di piccoli cluster, \u00e8 necessario allocare una quota maggiore di risorse per la gestione.<\/p>\n<h3>- Costi elevati<\/h3>\n<p>\nL'utilizzo inefficiente delle risorse comporta automaticamente costi elevati.<\/p>\n<p>Ad esempio, avere 30 master-node invece di tre alla stessa potenza computazionale avr\u00e0 sicuramente un impatto sui costi.<\/p>\n<h3>\u2212 Complessit\u00e0 di amministrazione<\/h3>\n<p>\nAmministrare molti cluster Kubernetes \u00e8 molto pi\u00f9 difficile che lavorare con uno solo.<\/p>\n<p>Ad esempio, sar\u00e0 necessario configurare l'autenticazione e l'autorizzazione per ogni cluster. Anche l'aggiornamento della versione di Kubernetes dovr\u00e0 essere effettuato pi\u00f9 volte.<\/p>\n<p>Probabilmente sar\u00e0 necessario applicare l'automazione per aumentare l'efficienza di tutte queste attivit\u00e0.<\/p>\n<p><i>Ora consideriamo scenari meno estremi.<\/i><\/p>\n<h2>3. Un cluster per ogni applicazione<\/h2>\n<p>\nIn questo approccio, si crea un cluster separato per tutte le istanze di una specifica applicazione:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Cluster per applicazione<\/i><\/p>\n<p>Questo approccio pu\u00f2 essere considerato come una generalizzazione del principio \"<b>un cluster separato per team<\/b>\", poich\u00e9 solitamente un team di ingegneri si occupa dello sviluppo di una o pi\u00f9 applicazioni.<\/p>\n<p><i>+ Utilizzo efficace delle risorse<\/i><\/p>\n<h3>+ Il cluster pu\u00f2 essere adattato all'applicazione<\/h3>\n<p>\nSe un'applicazione ha esigenze particolari, possono essere implementate nel cluster senza influenzare gli altri cluster.<\/p>\n<p>Tali esigenze possono includere worker con GPU, determinati plugin CNI, service mesh o qualche altro servizio.<\/p>\n<p>Ogni cluster pu\u00f2 essere adattato all'applicazione in esso operante, in modo da contenere solo ci\u00f2 che \u00e8 necessario.<\/p>\n<h3>\u2212 Ambienti diversi in un cluster<\/h3>\n<p>\nUn limite di questo approccio \u00e8 che le istanze delle applicazioni di ambienti diversi coesistono in un unico cluster.<\/p>\n<p>Ad esempio, la versione prod dell'applicazione funziona nello stesso cluster della versione dev. Ci\u00f2 significa anche che gli sviluppatori operano nello stesso cluster in cui \u00e8 in esecuzione la versione di produzione dell'applicazione.<\/p>\n<p>Se a causa delle azioni degli sviluppatori o di bug della versione dev si verifica un guasto nel cluster, ci\u00f2 potrebbe potenzialmente danneggiare anche la versione prod \u2014 un enorme svantaggio di questo approccio.<\/p>\n<p><i>E infine, l'ultimo scenario della nostra lista.<\/i><\/p>\n<h2>4. Un cluster per ogni ambiente<\/h2>\n<p>\nQuesto scenario prevede la dedicazione di un cluster separato per ogni ambiente:<\/p>\n<p><img decoding=\"async\" alt=\"Progettazione dei cluster Kubernetes: quanti dovrebbero essercene?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un cluster per ambiente<\/i><\/p>\n<p>Ad esempio, potresti avere cluster <i>dev<\/i>, <i>test<\/i> e <i>prod<\/i>, in cui eseguire tutte le istanze dell'applicazione destinate a un certo ambiente.<\/p>\n<p><i>Ecco i pro e contro di questo approccio.<\/i><\/p>\n<h3>+ Isolamento dell'ambiente prod<\/h3>\n<p>\nNell'ambito di questo approccio, tutti gli ambienti risultano isolati gli uni dagli altri. Tuttavia, nella pratica, questo \u00e8 particolarmente importante per l'ambiente di produzione.<\/p>\n<p>Le versioni di produzione dell'applicazione ora non dipendono da ci\u00f2 che accade in altri cluster e ambienti.<\/p>\n<p>In questo modo, se nel cluster di sviluppo si verifica all'improvviso un problema, le versioni di produzione delle applicazioni continueranno a funzionare come se nulla fosse successo.<\/p>\n<h3>+ Il cluster pu\u00f2 essere adattato all'ambiente<\/h3>\n<p>\nOgni cluster pu\u00f2 essere adattato al suo ambiente. Ad esempio, si pu\u00f2:<\/p>\n<ul>\n<li> installare nel cluster di sviluppo strumenti per lo sviluppo e il debug;<\/li>\n<li> installare framework e strumenti di test nel cluster <i>test<\/i>;<\/li>\n<li> utilizzare hardware pi\u00f9 potente e canali di rete nel cluster <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nQuesto consente di aumentare l'efficienza sia dello sviluppo che dell'operativit\u00e0 delle applicazioni.<\/p>\n<h3>+ Limitazione dell'accesso al cluster di produzione<\/h3>\n<p>\nLa necessit\u00e0 di lavorare direttamente con il cluster di produzione si presenta raramente, quindi \u00e8 possibile limitare notevolmente il numero di persone che vi hanno accesso.<\/p>\n<p>Si pu\u00f2 andare oltre e privare completamente le persone dell'accesso a questo cluster, eseguendo tutte le implementazioni tramite uno strumento automatizzato CI\/CD. Questo approccio ridurr\u00e0 al minimo il rischio di errori umani proprio dove \u00e8 pi\u00f9 critico.<\/p>\n<p><i>E ora alcune parole sui contro.<\/i><\/p>\n<h3>\u2212 Assenza di isolamento tra le applicazioni<\/h3>\n<p>\nIl principale svantaggio dell'approccio \u00e8 l'assenza di isolamento hardware e delle risorse tra le applicazioni.<\/p>\n<p>Le applicazioni non correlate condividono le risorse del cluster: il kernel di sistema, la CPU, la memoria e alcuni altri servizi.<\/p>\n<p>Come gi\u00e0 accennato, ci\u00f2 pu\u00f2 essere potenzialmente pericoloso.<\/p>\n<h3>\u2212 Impossibilit\u00e0 di localizzare le dipendenze delle applicazioni<\/h3>\n<p>\nSe un'applicazione ha requisiti specifici, \u00e8 necessario soddisfarli in tutti i cluster.<\/p>\n<p>Ad esempio, se un'applicazione richiede una GPU, allora ogni cluster deve contenere almeno un worker con GPU (anche se utilizzato solo da quell'applicazione).<\/p>\n<p>Di conseguenza, rischiamo di avere costi pi\u00f9 elevati e un uso inefficiente delle risorse.<\/p>\n<h2>Conclusione<\/h2>\n<p>\nCon un certo insieme di applicazioni, \u00e8 possibile collocarle in diversi grandi cluster o in molti pi\u00f9 piccoli.<\/p>\n<p>L'articolo esamina i pro e i contro di diversi approcci, da un unico cluster globale a diversi piccoli e specializzati:<\/p>\n<ul>\n<li> un grande cluster comune;<\/li>\n<li> un gran numero di piccoli cluster specializzati;<\/li>\n<li> un cluster per ogni applicazione;<\/li>\n<li> un cluster per ogni ambiente.<\/li>\n<\/ul>\n<p>\n<i>Quindi, quale approccio scegliere?<\/i><\/p>\n<p>Come al solito, la risposta dipende dallo scenario d'uso: \u00e8 necessario valutare i pro e i contro dei vari approcci e scegliere l'opzione pi\u00f9 ottimale.<\/p>\n<p>Tuttavia, la scelta non \u00e8 limitata agli esempi sopra riportati: \u00e8 possibile utilizzare qualsiasi loro combinazione!<\/p>\n<p>Ad esempio, \u00e8 possibile organizzare un paio di cluster per ciascun team: un cluster per lo sviluppo (che avr\u00e0 ambienti <i>dev<\/i> e <i>test<\/i>) e un cluster per <i>production<\/i> (dove si trover\u00e0 l'ambiente di produzione).<\/p>\n<p>Facendo riferimento alle informazioni di questo articolo, sarete in grado di ottimizzare adeguatamente i pro e i contro per uno scenario specifico. Buona fortuna!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLeggi anche nel nostro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Guida visiva alla diagnostica dei problemi in Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">I log in Kubernetes (e non solo) oggi: aspettative e realt\u00e0<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh: cosa ogni Software Engineer deve sapere sulla tecnologia pi\u00f9 in voga<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">Alfabeto della sicurezza in Kubernetes: autenticazione, autorizzazione, audit<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/498100\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 learnk8s \u2014 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 Kubernetes. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. TL;DR: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80076","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=\"description\" content=\"\u041f\u0440\u0438\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\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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-02T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T23:42:34+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\udd47Progettazione dei cluster Kubernetes: quanti ce ne devono essere? | ProHoster","description":"Nota.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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-02T23:42:34+00:00","article:modified_time":"2020-05-02T23:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80076","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 16:24:58","updated":"2022-10-02 20:23:35","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\/80076","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=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}