Kubernetes, la piattaforma di orchestrazione dei container open source più diffusa al mondo, è considerata una pietra miliare nella storia delle tecnologie cloud-native. Sviluppata internamente da Google e distribuita al pubblico nel 2014, Kubernetes ha consentito alle organizzazioni di abbandonare l'infrastruttura IT tradizionale e passare all'automazione delle attività operative legate all'implementazione, alla scalabilità e alla gestione di applicazioni containerizzate (o microservizi). Sebbene Kubernetes sia diventato lo standard de facto per la gestione dei container, molte aziende utilizzano la tecnologia anche per una gamma di casi d'uso più ampia.
I container ,unità software leggere che raggruppano il codice e tutte le sue dipendenze per l'esecuzione in qualsiasi ambiente, costituiscono la base di Kubernetes e sono fondamentali per i microservizi moderni, il software cloud-native e i workflow DevOps.
Docker è stato il primo strumento open source ad aver reso popolare la creazione, l'implementazione e la gestione di applicazioni containerizzate. Ma Docker non disponeva di uno strumento di "orchestrazione" automatizzato: questo rendeva dispendioso in termini di tempo e complesso per i team di data science scalare le applicazioni. Kubernetes, noto anche come K8s, è stato creato appositamente per affrontare queste sfide automatizzando la gestione delle applicazioni containerizzate.
In linea di massima, la piattaforma di orchestrazione Kubernetes funziona tramite container con pod e nodi. Un pod gestisce uno o più container Linux e può essere eseguito in multipli per la scalabilità e la resistenza agli errori. I nodi eseguono i pod e sono in genere raggruppati in un cluster Kubernetes, astraendo le risorse hardware fisiche sottostanti.
L'infrastruttura dichiarativa e basata sulle API di Kubernetes ha contribuito a liberare DevOps e altri team dai processi manuali, in modo che possano lavorare in modo più indipendente ed efficiente per raggiungere i propri obiettivi. Nel 2015, Google ha donato Kubernetes come tecnologia iniziale alla Cloud Native Computing Foundation (CNCF), l'hub open source e indipendente dal fornitore dell'elaborazione cloud-native.
Oggigiorno, Kubernetes è ampiamente utilizzato in produzione per gestire Docker e sostanzialmente qualsiasi altro tipo di runtime di container. Mentre Docker include il proprio strumento di orchestrazione, chiamato a, la maggior parte degli sviluppatori sceglie invece Kubernetes per l'orchestrazione dei container.
In quanto parte di un sistema open source, i servizi Kubernetes sono supportati da tutti i principali provider di cloud pubblico, tra cui IBM, Amazon Web Services (AWS), Microsoft Azure e Google. Kubernetes può essere eseguito anche su Bare Metal Server e virtual machine (VM) in ambienti di cloud privato, hybrid cloud ed edge, a condizione che il sistema operativo host sia una versione di Linux o Windows.
Ecco un riepilogo di sei casi d'uso principali di Kubernetes che rivelano come Kubernetes sta trasformando l'infrastruttura IT.
I siti web e le applicazioni di cloud computing ad alto traffico ricevono ogni giorno milioni di richieste da parte degli utenti. Un vantaggio chiave dell'utilizzo di Kubernetes per l'implementazione di app cloud su larga scala è la scalabilità automatica. Questo processo consente alle applicazioni di adattarsi automaticamente alle variazioni della domanda in modo rapido, efficiente e con un tempo di inattività minimo. Ad esempio, quando la domanda oscilla, Kubernetes consente alle applicazioni di funzionare continuamente e rispondere ai cambiamenti nei modelli di traffico web. Ciò aiuta a mantenere la giusta quantità di risorse di workload, senza provisioning eccessivo o insufficiente.
Kubernetes utilizza l'HPA (Horizontal Pod Autoscaling) per eseguire il bilanciamento del carico (ad esempio per l'utilizzo della CPU o per le metriche personalizzate) ridimensionando il numero di repliche di pod (cloni che facilitano l'auto-riparazione) correlate a una distribuzione specifica. In questo modo si attenuano i potenziali problemi come gli sbalzi di traffico, i problemi hardware o le interruzioni di rete.
Nota: l'HPA non deve essere confuso con la scalabilità automatica verticale dei pod (VPA) di Kubernetes, che assegna risorse aggiuntive, come memoria o CPU, ai pod già in esecuzione per il workload.
Settori come la pubblica amministrazione, le scienze, la finanza e l'ingegneria fanno molto affidamento sul calcolo ad alte prestazioni (HPC), cioè la tecnologia che elabora i big data per eseguire calcoli complessi. L'HPC utilizza potenti processori a velocità estremamente elevate per prendere decisioni istantanee basate sui dati. Gli utilizzi dell'HPC nel mondo reale includono l'automazione del trading azionario, la previsione del tempo, il sequenziamento del DNA e la simulazione di volo degli aerei.
I settori che più utilizzano l'HPC scelgono Kubernetes per gestire la distribuzione dei calcoli HPC in ambienti ibridi e multicloud. Kubernetes può anche fungere da strumento flessibile per supportare l'elaborazione in batch dei lavori coinvolti nei workload di calcolo ad alte prestazioni, il che migliora la portabilità dei dati e del codice.
La creazione e l'implementazione di sistemi di intelligenza artificiale (AI) e machine learning (ML) richiede enormi volumi di dati e processi complessi, come il calcolo ad alte prestazioni e l'analisi dei big data. L'implementazione del machine learning su Kubernetes rende più facile per le organizzazioni automatizzare la gestione e la scalabilità dei cicli di vita del ML e riduce la necessità di interventi manuali.
Ad esempio, la piattaforma di orchestrazione containerizzata Kubernetes può automatizzare parti dei workflow di manutenzione predittiva di AI e apprendimento automatico (ML), compresi i controlli dello stato di salute e la pianificazione delle risorse. Inoltre, Kubernetes può scalare i workload di apprendimento automatico (ML) verso l'alto o verso il basso per soddisfare le richieste degli utenti, regolare l'utilizzo delle risorse e controllare i costi.
Il machine learning si basa su modelli linguistici di grandi dimensioni per eseguire l'elaborazione del linguaggio naturale (NLP) ad alto livello, come la classificazione del testo, l'analisi del sentiment e la traduzione automatica, e Kubernetes aiuta a velocizzare l'implementazione di questi modelli per automatizzare il processo di PNL. Man mano che sempre più organizzazioni utilizzano le funzionalità di AI generativa, si affidano a Kubernetes per eseguire e scalare modelli di AI generativa, fornendo elevata disponibilità e tolleranza ai guasti.
Nel complesso, Kubernetes offre la flessibilità, la portabilità e la scalabilità necessarie per addestrare, testare, pianificare e distribuire modelli di ML e AI generativa.
I microservizi (o architettura a microservizi) offrono un approccio moderno di architettura cloud-native in cui ogni applicazione è composta da numerosi componenti o servizi più piccoli, liberamente connessi e distribuibili in modo indipendente. Ad esempio, i siti web di e-commerce più grandi sono costituiti da molti microservizi che includono, in genere, un servizio ordini, un servizio di pagamento, un servizio di spedizione e un servizio clienti. Ogni servizio ha la propria API REST, che gli altri servizi utilizzano per comunicare con esso.
Kubernetes è stato progettato per gestire la complessità necessaria per gestire tutti i componenti indipendenti in esecuzione contemporaneamente all'interno dell'architettura di microservizi. Ad esempio, la funzionalità di alta disponibilità (HA) integrata di Kubernetes garantisce operazioni continue anche in caso di guasto, mentre la funzione di ingegneria della piattaforma interviene se un'applicazione containerizzata o un componente dell'applicazione si bloccano. La funzione di ingegneria della piattaforma può ridistribuire istantaneamente l'applicazione o i suoi componenti, in base allo stato desiderato, aiutando a mantenere l'operatività e l'affidabilità.
Kubernetes è progettato per essere utilizzato ovunque, semplificando alle organizzazioni la migrazione delle applicazioni da ambienti on-premise a hybrid cloud e multicloud. Kubernetes standardizza la migrazione fornendo agli sviluppatori di software comandi integrati per eseguire un'efficace distribuzione delle app. Kubernetes può anche implementare modifiche alle app e ridimensionarle in base ai requisiti dell'ambiente.
Kubernetes offre portabilità tra ambienti on-premise e cloud poiché astrae i dettagli dell'infrastruttura dalle applicazioni. In questo modo, si elimina la necessità di creare dipendenze specifiche per le app della piattaforma e si semplifica lo spostamento delle applicazioni tra diversi provider cloud o data center con il minimo sforzo.
Per i team DevOps aziendali, essere in grado di aggiornare e distribuire rapidamente le applicazioni è fondamentale per il successo aziendale. Kubernetes fornisce ai team sia lo sviluppo che la manutenzione del sistema software allo scopo di migliorare l'agilità complessiva. E l'interfaccia API Kubernetes consente agli sviluppatori di software e ad altri stakeholder DevOps di visualizzare, accedere, implementare, aggiornare e ottimizzare facilmente i loro ecosistemi di container.
CI/CD, acronimo di continuous integration (CI) e continuous delivery (CD) , è diventato un aspetto fondamentale dello sviluppo software. In DevOps, il CI/CD snellisce la codifica, il collaudo e la distribuzione delle applicazioni, fornendo ai team un unico repository per l'archiviazione del lavoro e strumenti di automazione per combinare e testare il codice in modo coerente e assicurarne il corretto funzionamento. Kubernetes svolge un ruolo importante nelle pipeline CI/CD cloud-native, automatizzando la distribuzione dei container negli ambienti dell'infrastruttura cloud e garantendo un uso efficiente delle risorse.
Kubernetes svolge un ruolo critico nell'infrastruttura IT, come si può vedere nei suoi numerosi casi d'uso basati sul valore che vanno oltre l'orchestrazione dei container. Ecco perché così tante aziende continuano a implementare Kubernetes. In un sondaggio Cloud Native del 2021 condotto dalla CNCF, è dimostrato che l'utilizzo di Kubernetes ha raggiunto il punto più alto di sempre, con il 96% delle organizzazioni che utilizza o valuta la piattaforma containerizzata. Secondo lo stesso studio, l'utilizzo di Kubernetes continua ad aumentare nelle regioni tecnologiche emergenti, come l'Africa, dove il 73% dei rispondenti utilizza Kubernetes in produzione.
Kubernetes pianifica e automatizza l'integrazione delle attività con la gestione di architetture basate su container, tra cui la distribuzione di container, gli aggiornamenti, la fornitura di servizi, il provisioning dello storage, il bilanciamento dei carichi, il monitoraggio dello stato di salute e altro ancora. Noi di IBM stiamo aiutando i clienti a modernizzare le loro applicazioni e ottimizzare la loro infrastruttura IT con Kubernetes e altre soluzioni cloud-native.
Implementa cluster sicuri e ad elevata disponibilità in un'esperienza nativa per Kubernetes con IBM Cloud Kubernetes Service.
Containerizza e implementa i cluster Kubernetes per piattaforme containerizzate utilizzando Red Hat OpenShift on IBM Cloud.