Magazine

Kubernetes: cos'è e come funziona, la guida completa

14/02/2024
Kubernetes: cos'è e come funziona, la guida completa
PMIProfessionisti
La containerizzazione è diventata molto comune nel campo dello sviluppo e della distribuzione delle applicazioni moderne. Le applicazioni e le relative dipendenze possono essere raggruppate in entità portatili e separate chiamate contenitori grazie alla containerizzazione.

Indipendentemente dall'infrastruttura sottostante, i contenitori offrono impostazioni coerenti e ripetibili che consentono agli sviluppatori di creare una sola volta e operare ovunque. Sebbene la gestione di un gran numero di contenitori su più host o cluster possa essere complessa, la containerizzazione presenta molti vantaggi, tra cui la mobilità e la scalabilità. Le piattaforme per l'orchestrazione dei container semplificano l'esecuzione di applicazioni containerizzate su larga scala automatizzando la distribuzione, il dimensionamento e l'amministrazione. La gestione delle applicazioni containerizzate è stata trasformata da Kubernetes, la principale tecnologia di orchestrazione dei container.

Kubernetes: cos'è e come funziona

Kubernetes, a volte noto come K8 (le otto lettere tra le lettere "K" e "S"), è un contenitore open source di orchestrazione piattaforma creata per la prima volta da Google. Attualmente è considerato come soluzione standard del settore. Kubernetes offre un framework affidabile e adattabile per la distribuzione, la scalabilità e la gestione delle applicazioni containerizzate.

Automatizza la distribuzione, il dimensionamento e l'amministrazione dei contenitori per garantire che le applicazioni funzionino come previsto. Generando e controllando numerose repliche, Kubernetes consente il ridimensionamento orizzontale delle istanze dell'applicazione. Utilizza inoltre metodi di bilanciamento del carico integrati per dividere il traffico di rete tra queste copie. Per fornire elevata disponibilità e tolleranza agli errori, Kubernetes controlla continuamente lo stato dei suoi contenitori e riavvia o sostituisce automaticamente quelli che non funzionano. La piattaforma supporta l'individuazione dei servizi basata su DNS e assegna a ciascun contenitore un indirizzo IP distinto, consentendo una comunicazione fluida tra contenitori.
Infine, fornisce provisioning dinamico, collegamento e scollegamento delle risorse di storage ai container secondo necessità. Con la sua architettura distribuita, Kubernetes può gestire un cluster di computer ed eseguire carichi di lavoro in contenitori. Gli elementi essenziali di Kubernetes includono:

Nodo master
Il nodo master coordina le distribuzioni dei contenitori e gestisce lo stato generale del cluster. Include elementi come il gestore del controller, lo scheduler, il server API e l’etcd (un archivio chiave-valore distribuito).

Nodi di lavoro
I carichi di lavoro containerizzati vengono eseguiti su nodi di lavoro, detti anche nodi lavoratore o nodi minion. Svolgono i compiti loro delegati e sono supervisionati dal nodo master.

Pod
Un pod è l'unità più piccola e fondamentale. Rappresenta una singola istanza di processo operativo o un gruppo di processi che si trovano nella stessa posizione e condividono lo stesso spazio dei nomi e le stesse risorse di rete.

Servizi
I servizi offrono punti di accesso alla rete affidabili per una raccolta di pod. Facilitano il rilevamento e il bilanciamento del carico all'interno del cluster.

Controller
In Kubernetes, i controller controllano lo stato desiderato di una varietà di risorse. Gli esempi includono il controller di distribuzione per la gestione degli aggiornamenti in sequenza e dei rollback e il controller ReplicaSet per la gestione delle repliche dei pod.

Kubernetes: una guida completa

Kubernetes può essere installato tramite una varietà di tecniche, tra cui le distribuzioni preconfezionate disponibili presso numerosi fornitori, tra cui OpenShift, Rancher e piattaforme cloud basate su Kubernetes come Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) e Azure Kubernetes Service (AKS).

C’è anche l’installazione manuale, che prevede la configurazione manuale della rete, l'installazione dei componenti necessari su ciascun nodo e la creazione della connessione tra il nodo master e quello di lavoro. Con gli strumenti di distribuzione, l'installazione e la configurazione del cluster Kubernetes sono automatizzate utilizzando strumenti come kubeadm, kops e kubespray. In genere, il processo di installazione comporta la configurazione del nodo master, l'aggiunta di nodi di lavoro al cluster, la configurazione dei componenti di rete e di archiviazione e l'installazione dei runtime del contenitore. 

Per garantire il corretto funzionamento del cluster, la gestione comporta una serie di attività amministrative e di gestione. Tra i compiti essenziali ci sono: Scalabilità, Aggiornamento e Monitoraggio. Nel primo punto, Kubernetes consente di scalare l’applicazione modificando le risorse assegnate ai pod, il numero di repliche per i pod o entrambi. A seconda delle circostanze specifiche, è possibile utilizzare l'elaborazione manuale o automatica.

Con l’Aggiornamento, Kubernetes produce regolarmente versioni aggiornate che includono correzioni di bug, aggiornamenti di sicurezza e nuove funzionalità. Mantenere un cluster aggiornato riducendo i tempi di inattività e preservando la compatibilità con le versioni precedenti richiede la pianificazione e l'esecuzione del processo di aggiornamento. A sua volta, il monitoraggio è fondamentale per tenere d'occhio la funzionalità e l'integrità del cluster Kubernetes. Per raccogliere e visualizzare informazioni relative alle risorse del cluster, all'integrità dei pod e alle prestazioni generali del sistema, si possono utilizzare diversi strumenti di monitoraggio come Prometheus e Grafana

La sicurezza
È fondamentale proteggere il cluster Kubernetes per salvaguardare le informazioni critiche e difendersi da eventuali accessi esterni. Alcuni esempi per difendere i dati sono l’autenticazione basata su token, certificati client e connessione con provider di identità di terze parti come LDAP o Active Directory. Per specificare restrizioni di accesso e autorizzazioni granulari, Kubernetes offre il controllo degli accessi basato sui ruoli (RBAC). È possibile, inoltre, limitare l'accesso alle risorse del cluster in base a ruoli utente, gruppi o azioni particolari stabilendo regole specifiche.

Kubernetes: i vantaggi e gli svantaggi

L'obiettivo principale di Kubernetes è automatizzare la distribuzione, l'aggiornamento, la rete e la gestione del ciclo di vita dei sistemi containerizzati. La piattaforma controlla anche la stabilità dei sistemi e se funzionano in modo efficiente. Ad esempio, può riavviare, arrestare e riportare le applicazioni alle iterazioni precedenti se iniziano a influenzare negativamente altre applicazioni. 

La scalabilità automatica di Kubernetes alloca i carichi di lavoro delle applicazioni tra i nodi che compongono il cluster per ottimizzare il consumo di risorse. Ad esempio, se il traffico per un container è troppo elevato, la piattaforma può ridistribuire il carico per mantenere stabile la distribuzione. Ciò consente ai team IT di regolare manualmente la CPU, la memoria e lo spazio di archiviazione dei pod e ridurre i costi. Kubernetes vanta una vivace comunità di oltre 3.000 collaboratori e un ecosistema di software open source in crescita. Invece di racchiudere il proprio sistema operativo, i contenitori vengono eseguiti su un sistema operativo condiviso. Laddove un'applicazione containerizzata occupa solo megabyte, la stessa applicazione su una VM può raggiungere diversi gigabyte. Ciò rende i contenitori Kubernetes più veloci e ne consente il porting in qualsiasi ambiente.

Non possiamo dire che ogni azienda trarrà vantaggio dalla containerizzazione dei propri servizi. Diamo un'occhiata ai principali svantaggi:

Problemi di visibilità
Monitorare tutto il traffico nel cluster di host è impegnativo, soprattutto se distribuito in diversi ambienti. Questo è probabilmente il motivo per cui il networking e il data logging posso essere sfide da considerare nell’uso di Kubernetes. Per fortuna, è possibile integrare un software di monitoraggio per migliorare la visibilità dell’ambiente.

Problemi di sicurezza
Secondo un sondaggio RedHat condotto su 300 utenti di Kubernetes, circa il 59% ha considerato la sicurezza informatica come preoccupazione più significativa per la containerizzazione, con il 55% che subisce ritardi a causa di problemi di sicurezza. Firewall, strumenti di autenticazione e controllo degli accessi forniti dalle piattaforme informatiche non copriranno tutte le vulnerabilità e gli exploit zero-day. Tuttavia, i sistemi di prevenzione delle intrusioni (IPS) e sistemi di rilevamento delle intrusioni (IDS) per Kubernetes possono migliorare la sicurezza della rete.

Mancanza di strumenti integrati
Kubernetes non viene fornito con middleware, framework di elaborazione dati, database o sistemi di archiviazione cluster. Ma, come accennato, esiste un ecosistema in crescita di strumenti di terze parti, software open source e API per migliorarne le capacità. 

Dipendenza dalle risorse
L'adozione di Kubernetes richiede solitamente che le aziende facciano un investimento significativo nell'architettura dei microservizi, perché è necessario isolare le applicazioni prima di inserirle in contenitori. È inoltre necessario allocare risorse e spazio di archiviazione per ciascun microservizio, il che può aumentare i costi e complicare la gestione. Pertanto, potrebbe essere eccessivo (e proibitivamente costoso) pensare di adottare Kubernetes per le piccole imprese.

Questo ci porta a una conclusione: sebbene il cluster Kubernetes su un’architettura di microservizi possa avvantaggiare le aziende in crescita, le imprese più piccole potrebbero sentirsi più a loro agio iniziando con un’architettura monolitica. Ma come evitare il costoso refactoring quando si è pronti ad adottare un'architettura di microservizi scalabile e liberamente accoppiata con contenitori? La risposta è adottare un approccio monolitico modulare. Ciò significa stabilire limiti forti per i moduli software così da ridurre al minimo le dipendenze. Quindi, man mano che l’azienda cresce, si troverà più semplice disaccoppiare questi moduli in microservizi indipendenti e containerizzarli. 

Vuoi scoprire di più sul nuovo servizio Aruba Managed Kubernetes? Clicca qui e provalo gratuitamente