Kubernetes: Cosa fa effettivamente e perchè si usa


16 Aprile 2020 - Kubernetes (K8s) è un sistema open source per automatizzare la distribuzione, il ridimensionamento e la gestione di applicazioni containerizzate.
Kubernetes (K8s) è un sistema open source per automatizzare la distribuzione, il ridimensionamento e la gestione di applicazioni containerizzate.

Kubernetes è uno strumento indipendente per la gestione di cluster e container, di provenienza aperta da Google nel 2014. Fornisce una "piattaforma per automatizzare l'implementazione, il ridimensionamento e le operazioni dei container di applicazioni tra cluster di host". Soprattutto, ciò riduce il costo delle spese di cloud computing e semplifica le operazioni e l'architettura.

Prima di spiegare cosa fa Kubernetes, dobbiamo spiegare cosa sono i contenitori e perché le persone li usano.

Un contenitore è una macchina mini-virtuale. È piccolo, in quanto non ha driver di dispositivo e tutti gli altri componenti di una normale macchina virtuale. Docker è di gran lunga il contenitore più popolare ed è scritto in Linux. Anche Microsoft ha aggiunto contenitori a Windows, perché sono diventati così popolari.

Il modo migliore per illustrare perché questo è utile e importante è fare un esempio.

Supponiamo di voler installare il server Web nginx su un server Linux. Hai diversi modi per farlo. Innanzitutto, è possibile installarlo direttamente sul sistema operativo del server fisico. Ma la maggior parte delle persone usa macchine virtuali ora, quindi probabilmente lo installeresti lì.

Ma la configurazione di una macchina virtuale richiede anche alcuni sforzi e costi amministrativi. E le macchine saranno sottoutilizzate se la dedicherai solo a un'attività, ovvero il modo in cui le persone usano le macchine virtuali. Sarebbe meglio caricare quella macchina con nginx, software di messaggistica, un server DNS, ecc.

Le persone che hanno inventato i container hanno riflettuto su questi problemi e hanno ragionato che, poiché nginx o qualsiasi altra applicazione necessita solo di un sistema operativo minimo indispensabile, perché non creare una versione ridotta di un sistema operativo, inserire nginx ed eseguirlo. Quindi hai un'unità autonoma, indipendente dalla macchina che può essere installata ovunque.

Docker Hub

Il contenitore può essere distribuito proprio come un modello di macchina virtuale, ovvero un'applicazione pronta all'uso che richiede una configurazione minima o nulla.

Esistono migliaia di immagini Docker preconfigurate nel repository pubblico Dockerhub. Lì, le persone hanno impiegato del tempo per assemblare configurazioni software opensource che potrebbero richiedere qualcun altro ore o giorni per essere messe insieme. Le persone ne traggono vantaggio perché possono installare nginx o anche oggetti molto più complicati semplicemente scaricandoli da lì.

Ad esempio, questo comando a una riga disattiva, installa e avvia Apache Spark con i notebook Jupyter (iPython):

docker run -d -p 8888: 8888 jupyter / all-spark-notebook

Come puoi vedere, è in esecuzione sulla porta 8888. Quindi potresti installare qualcos'altro su un'altra porta o persino installare una seconda istanza di Spark e Jupyter.

La necessità di controllo e gestione

Ora, c'è un problema intrinseco con i container, proprio come accade con le macchine virtuali. Questa è la necessità di tenerne traccia. Quando le aziende di cloud pubblico ti addebitano il tempo di CPU o lo spazio di archiviazione, devi assicurarti di non avere macchine orfane che girano là fuori senza fare nulla. Inoltre, è necessario far girare automaticamente di più quando una macchina ha bisogno di più memoria, CPU o memoria, oltre a spegnerle quando il carico si alleggerisce. È qui che entra in gioco Kubernetes.

Kubernetes

Google ha creato Kubernetes e lo utilizza da 10 anni. Che sia stato utilizzato per far funzionare i sistemi di Google per così tanto tempo è uno dei suoi punti di forza. Due anni fa Google ha spinto Kubernetes nell'open source.

Kubernetes è uno strumento di gestione di cluster e container. Ti consente di distribuire container in cluster, ovvero una rete di macchine virtuali. Funziona con diversi contenitori, non solo Docker.

Nozioni di base di Kubernetes

L'idea di base di Kubernetes è quella di estrarre ulteriormente macchine, storage e reti dalla loro implementazione fisica. Quindi è un'unica interfaccia per distribuire container su tutti i tipi di cloud, macchine virtuali e macchine fisiche.

Ecco alcuni concetti di Kubernetes per aiutare a capire cosa fa.

Nodo

Un nodo è una macchina fisica o virtuale. Non è stato creato da Kubernetes. Puoi crearli con un sistema operativo cloud, come OpenStack o Amazon EC2, o installarli manualmente. Pertanto, è necessario stabilire l'infrastruttura di base prima di utilizzare Kubernetes per distribuire le app. Ma da quel momento può definire reti virtuali, archiviazione, ecc. Ad esempio, è possibile utilizzare OpenStack Neutron o Romana per definire le reti e espellerle da Kubernetes.

Pods

Un pod è uno o più contenitori che logicamente vanno insieme. I pod vengono eseguiti su nodi. I pod funzionano insieme come unità logica. Quindi hanno lo stesso contenuto condiviso. Tutti condividono l'indirizzo IP condiviso ma possono raggiungerne altri tramite localhost. E possono condividere l'archiviazione. Ma non devono funzionare tutti sulla stessa macchina poiché i contenitori possono estendersi su più di una macchina. Un nodo può eseguire più pod.

I pod sono compatibili con il cloud. Ad esempio, potresti creare due istanze di Nginx e assegnare loro un indirizzo IP pubblico su Google Compute Engine (GCE). Per fare ciò avresti avviato il cluster Kubernetes, configurato la connessione a GCE e quindi digitare qualcosa del tipo:

kubectl espone la distribuzione my-nginx –port = 80 –type = LoadBalancer

Distribuzione

Una serie di pod è una distribuzione. Una distribuzione garantisce che un numero sufficiente di pod sia in esecuzione contemporaneamente per servire l'app e spegne quei pod che non sono necessari. Può farlo osservando, ad esempio, l'utilizzo della CPU.

 

 

Per iniziare a conoscere kubernates, il lettore può installare MiniKube per eseguirlo su un unico computer e giocarci.



Commenti:

Nessun commento

Accedi al portale per commentare l'articolo. Accedi