Kubernetes è un sistema open source per la gestione delle applicazioni in un ambiente tecnologico contenitore. Kubernetes automatizza i processi manuali per distribuire e scalare le applicazioni containerizzate. Può anche gestire cluster di applicazioni containerizzate, che possono comprendere cloud pubblici, privati ​​e ibridi.

Il nome, Kubernetes, si ispira all'analogia della nave portacontainer e si basa su quello per indicare la parola greca che si traduce in “timoniere,” come in quello che ha bisogno di pilotare la nave portacontainer. Anche Kubernetes viene chiamato “Kube” e “K8S” che è un numero, usando la prima lettera, l'ultima lettera e il numero di lettere tra quelle lettere.

Storia di Kubernetes

Eziologie di parole a parte, Kubernetes è stato originariamente creato da Google, in quanto è nato da un progetto interno Borg, con contenitori che alimentano la tecnologia Google Cloud. In realtà, Google afferma di avere esperienza con i contenitori per quindici anni e afferma di farlo “eseguire miliardi di container a settimana,” che ha dato loro un sacco di esperienza che è andato in questo programma software. Kubernetes è stato poi donato alla Linux Foundation come tecnologia seed, per formare la Cloud Native Computing Foundation (CNCF) nel 2015.

Mentre Kubernetes è un progetto open source, è ufficialmente supportato da Microsoft Azure e Google Cloud. Kubernetes ha ottenuto l'accettazione iniziale tra gli early adopter, che ha tradotto una crescita costante, e ora occupa una posizione di rilievo nello spazio software di gestione dei container.

In questi giorni, l'utilizzo di più contenitori per un'app di produzione reale è diventato un luogo comune, con i contenitori posizionati su più server. Il software Kubernetes consente la distribuzione di questi contenitori e ridimensionarli su più server per adattarli al carico di lavoro, compresa la pianificazione dei contenitori in un cluster. Può anche aiutare a gestire la salute di questi contenitori multipli.

Implementazione di Kubernetes

Kubernetes viene distribuito per un gruppo di contenitori, che viene definito un cluster. Uno dei contenitori del cluster è designato come master del cluster, che esegue i processi del piano di controllo di Kubernetes. Gli altri contenitori del cluster vengono assegnati come nodi, ovvero le macchine worker, che rientrano nel controllo del master del cluster, che funziona come endpoint unificato.

Il master del cluster ha il controllo totale dei suoi nodi, designando il loro ciclo di vita, compresa la valutazione della loro salute, oltre a controllare gli aggiornamenti e le riparazioni su ciascun nodo. Nel cluster possono essere presenti contenitori speciali, che vengono designati come agenti per nodo con funzioni specifiche, ad esempio raccolta di registri o connettività di rete intra-cluster.

L'impostazione predefinita per un nodo è che abbia una CPU virtuale e 3,75 GB di RAM, che è il tipo di macchina Compute Engine standard. Per ulteriori attività di elaborazione intensiva, è possibile scegliere una piattaforma CPU minima di base più elevata. Renditi conto che non tutte le risorse del nodo possono essere applicate all'applicazione progettata per l'esecuzione. Piuttosto, alcune di queste risorse sono necessarie per eseguire il motore di Kubernetes. Le risorse allocabili del nodo, che possono essere utilizzate per eseguire l'applicazione, sono la differenza tra le risorse totali e l'importo riservato per il motore Kubernetes.

A titolo di esempio, se il nodo ha 4 GB di RAM disponibili, il 25% di esso viene riservato per il motore Kubernetes e il restante 75% può essere utilizzato per eseguire l'applicazione e richiede solo il 20% dei successivi 4 GB di RAM se il nodo ha un totale di 8 GB di RAM. Il motore di Kubernetes è meno affamato delle risorse della CPU, riservando solo il 6% della potenza di elaborazione del primo core del nodo e solo l'1% di un secondo core designato per il nodo.

Il master del cluster esegue Kubernetes API Server, che gestisce le richieste, che provengono dalle chiamate API di Kubernetes dal software Kubernetes. Il server API di Kubernetes funziona come "hub di comunicazione" per l'intero cluster contenitore.

Funzionalità di Kubernetes

Contribuire alla popolarità di Kubernetes è il suo robusto set di funzionalità. Questi includono:

  • Binpack automatico: questo automatizza il posizionamento dei contenitori in base all'utilizzo più efficiente delle risorse.
  • Ridimensionamento orizzontale: le applicazioni possono essere ridimensionate verso l'alto o verso il basso tramite un semplice comando o automatizzate per abbinare l'utilizzo della CPU.
  • Implementazioni e rollback automatici: Kubernetes distribuisce gli aggiornamenti agli aggiornamenti delle applicazioni per fasi, anziché tutte in una volta, monitora i problemi di salute e, se trovato, esegue automaticamente il rollback a una versione più stabile per preservare il tempo di attività.
  • Orchestrazione dello storage: funziona con una varietà di soluzioni di storage per una maggiore flessibilità, dal cloud locale a quello pubblico.
  • Auto-guarigione: la capacità di uccidere i contenitori che si bloccano e di riavviare i container che bloccano o falliscono il controllo sanitario.
  • Scoperta del servizio e bilanciamento del carico: Kubernetes è in grado di assegnare a ciascun container il proprio indirizzo IP, con un nome DNS, e la possibilità di distribuire il carico tra di loro.
  • Gestione segreta e configurazione: le applicazioni possono essere aggiornate senza una ricostruzione dell'immagine.
  • Esecuzione batch: gestione per carichi di lavoro di integrazione batch e continua.

Applicazioni del mondo reale di Kubernetes

Kubernetes viene utilizzato da grandi aziende, tra cui Comcast, eBay, Goldman Sachs, The New York Times e Pokemon Go, tra molti altri. Un esempio di utilizzo di Kubernetes è il fornitore di video Sling TV, che dopo il loro lancio nel 2015 ha riscontrato problemi in quanto i nuovi abbonati stavano superando le loro risorse esistenti mentre tentavano di distribuire la TV in diretta via Internet. Per migliorare l'esperienza dei propri clienti e il desiderio di aumentare la flessibilità, per ora e in futuro, è stata presa la decisione di passare a una strategia cloud ibrida. Questo ha utilizzato sia un multi data center VMWare on-premise, integrato con più cloud pubblici, sia controllato tramite il motore Kubernetes.

Secondo Brad Linder, Cloud Native & Big Data Evangelist di Sling TV, “Stiamo arrivando al punto in cui possiamo fare clic con un solo clic su un intero data center: la rete di elaborazione, la registrazione e il monitoraggio di tutte le app.” Continua dicendo che in precedenza la distribuzione di una nuova app richiedeva giorni, che ora possono essere raggiunti in circa un'ora tramite il motore Kubernetes.

Sebbene Kubernetes abbia origini umili come progetto interno in Google, si è evoluto fino a diventare un attore dominante per il software di gestione dei contenitori, promosso senza dubbio dal suo approccio open source. La potenza e la flessibilità del motore Kubernetes spiegano perché viene utilizzata in molti settori diversi.

  • Discutiamo anche la tecnologia dei container in modo più dettagliato qui