My IBM Accedi Iscriviti
Cos'è Kubernetes?

Cos'è Kubernetes?

Esplora la soluzione Kubernetes di IBM Registrati per ricevere gli aggiornamenti cloud
Illustrazione con collage di pittogrammi di monitor del computer, server, nuvole, punti

Data di pubblicazione: 11 marzo 2024
Autori: Stephanie Susnjara, Ian Smalley

Cos'è Kubernetes?

Cos'è Kubernetes?

Kubernetes, noto anche come k8s o kube, è una piattaforma di orchestrazione di container open source ideata per pianificare e automatizzare l'implementazione, la gestione e la scalabilità delle applicazioni containerizzate.

Oggi, Kubernetes e il più ampio ecosistema di tecnologie legate ai container si sono uniti per formare gli elementi costitutivi della moderna infrastruttura cloud. Questo ecosistema consente alle organizzazioni di fornire un ambiente di computing multicloud ibrido altamente produttivo per eseguire attività complesse relative all'infrastruttura e alle operazioni. Inoltre, supporta lo sviluppo cloud-native consentendo un approccio di creazione delle applicazioni basato sul principio "build-once-and-deploy-anywhere" (realizza una volta e distribuisci ovunque).

La parola Kubernetes deriva dal greco e significa timoniere o pilota, da qui il timone nel logo Kubernetes (link esterno a ibm.com).

Ottieni flessibilità sul posto di lavoro con DaaS

Scopri in che modo il Desktop as a Service (DaaS) consente alle aziende di raggiungere lo stesso livello di prestazioni e sicurezza della distribuzione delle applicazioni on-premise.

Contenuti correlati Registrati per ricevere la guida sull'hybrid cloud
Background: container, Docker e Kubernetes

Background: container, Docker e Kubernetes

Cosa sono i contenitori?

I container sono componenti di applicazioni leggeri ed eseguibili che combinano il codice sorgente delle applicazioni con tutte le librerie e le dipendenze del sistema operativo  necessarie per eseguire il codice in qualsiasi ambiente.

I container sfruttano una forma di virtualizzazione del sistema operativo che consente a più applicazioni di condividere una singola istanza di un sistema operativo isolando i processi e controllando la quantità di CPU, memoria e disco a cui tali processi possono accedere . Poiché sono più piccoli, efficienti in termini di risorse e portabili rispetto alle macchine virtuali (VM), i container sono diventati  di fatto le unità di calcolo delle moderne applicazioni cloud-native.  I container sono anche più efficienti in termini di risorse: consentono di eseguire più applicazioni su meno macchine (server virtuali e fisici), con meno istanze del sistema operativo.

Poiché i container possono essere eseguiti in modo coerente ovunque, sono diventati fondamentali per l'architettura sottostante che supporta gli ambienti multicloud ibridi, la combinazione di on-premise, cloud privato, cloud pubblico e più di un servizio cloud da più di un fornitore di cloud.

Cos'è Docker?

Docker è lo strumento più popolare per la creazione e l'esecuzione di container Linux. Mentre le prime forme di container sono state introdotte decenni fa (con tecnologie come FreeBSD Jails e AIX Workload Partitions), i container sono stati democratizzati nel 2013 quando Docker li ha resi disponibili al pubblico con una nuova implementazione intuitiva per gli sviluppatori e adatta al cloud.

Docker è iniziato come progetto open source, ma oggi si riferisce anche a Docker Inc., la società che produce Docker, un toolkit container commerciale che si basa sul progetto open source (e contribuisce con i suoi miglioramenti alla comunità open source).

Docker è stato costruito sulla tradizionale tecnologia Linux container (LXC), ma consente una virtualizzazione più granulare dei processi del kernel Linux e aggiunge funzioni per rendere i container più accessibili agli sviluppatori per la creazione, la distribuzione, la gestione e la sicurezza.

Sebbene oggi esistano piattaforme alternative di runtime per container come Open Container Initiative (OCI), CoreOS e Canonical (Ubuntu) LXD, Docker è la scelta dominante. Inoltre, Docker è diventato sinonimo di container e talvolta viene scambiato come un competitor di tecnologie complementari come Kubernetes.

Oggi, Docker e Kubernetes sono i principali strumenti di containerizzazione, con Docker che domina l'82% del mercato e Kubernetes che controlla la quota di mercato dell'11,52% nel 2024 (link esterno a ibm.com).

Orchestrazione di container con Kubernetes

Con la proliferazione dei container, oggi un'organizzazione potrebbe averne centinaia o migliaia. Sono necessari team operativi per pianificare e automatizzare la distribuzione dei containerla creazione di reti, la scalabilità e la disponibilità. Entra nell'orchestrazione dei container.

Basato su Borg, la piattaforma interna di orchestrazione dei container di Google, Kubernetes è stato presentato al pubblico come strumento open source nel 2014, con Microsoft, Red Hat, IBM e altri importanti attori tecnologici che hanno aderito come primi membri della comunità Kubernetes. Nel 2015, Google ha donato Kubernetes alla Cloud Native Computing Foundation (CNCF) (link esterno a ibm.com), l'hub di computing cloud-native, open source e indipendente dal fornitore.

Kubernetes è diventato il primo progetto ospitato del CNCF nel marzo 2016. Da allora Kubernetes è diventato lo strumento di orchestrazione dei container più utilizzato in tutto il mondo per eseguire workload basati su container. In un rapporto del CNCF (link esterno a ibm.com), Kubernetes è il secondo progetto open-source più grande al mondo dopo Linux, e il principale strumento di orchestrazione dei container per il 71% delle aziende Fortune 100. 

Nel 2018, Kubernetes è stato il primo progetto di laurea del CNCF, diventando uno dei progetti open source in più rapida crescita nella storia. Mentre altre opzioni di orchestrazione dei container, in particolare Docker Swarm e Apache Mesos, hanno guadagnato una certa popolarità all'inizio, Kubernetes è diventato rapidamente il più adottato. 

Da quando Kubernetes è entrato a far parte del CNCF nel 2016, il numero di collaboratori è cresciuto fino a 8.012, pari a un aumento del 996% (link esterno a ibm.com). Al momento della stesura di questo articolo, i collaboratori hanno aggiunto oltre 123.000 commit al repository Kubernetes su GitHub (link esterno a ibm.com).

Cosa fa Kubernetes?

Cosa fa Kubernetes?

Kubernetes pianifica e automatizza le attività relative ai container durante l'intero ciclo di vita delle applicazioni, incluse quelle indicate di seguito.

Distribuzione

Implementa un numero definito di container su un host specifico e mantienili in esecuzione in uno stato desiderato.

Rollout

Un rollout è una modifica a una distribuzione. Kubernetes consente di avviare, sospendere, riprendere o annullare i rollout.

Rilevamento dei servizi

Kubernetes può automaticamente esporre un container su Internet o ad altri container utilizzando un Domain Name System (DNS) o un indirizzo IP.

Provisioning dello storage

Imposta Kubernetes in modo da fornire uno storage permanente, locale o su cloud, ai tuoi container in base alle necessità.

Bilanciamento del carico

In base all'utilizzo della CPU o a metriche personalizzate, il load balancing di Kubernetes può distribuire il workload sulla rete per mantenere prestazioni e stabilità. 

Scalabilità automatica

In caso di picchi di traffico, la scalabilità automatica di Kubernetes può attivare nuovi cluster se necessario per gestire il workload aggiuntivo.

Ingegneria della piattaforma per l'alta disponibilità

Quando un container non funziona, Kubernetes lo può riavviare o sostituire automaticamente per prevenire il tempo di inattività. Può anche disattivare i container che non soddisfano i tuoi requisiti di verifica dello stato di integrità.

Architettura e componenti di Kubernetes

Architettura e componenti di Kubernetes

L'implementazione di Kubernetes coinvolge i cluster, gli elementi costitutivi dell'architettura Kubernetes. I cluster sono costituiti da nodi, ciascuno dei quali rappresenta un singolo host di elaborazione, una macchina fisica (bare metal server) o una VM.

L'architettura Kubernetes è costituita da due parti principali: i componenti del riquadro di controllo e i componenti che gestiscono i singoli nodi.

Un nodo è composto da pod. I pod sono gruppi di container che condividono le stesse risorse di calcolo e la stessa rete. Sono anche l'unità di scalabilità in Kubernetes. Se un container in un pod sta ricevendo più traffico di quanto possa gestire, Kubernetes replicherà il pod su altri nodi nel cluster.

Il piano di controllo gestisce automaticamente la pianificazione dei pod tra i nodi di un cluster. 

Componenti del piano di controllo

Ogni cluster dispone di un nodo master che gestisce il piano di controllo del cluster. Il nodo principale esegue un servizio di pianificazione che automatizza quando e dove i container vengono distribuiti in base ai requisiti di distribuzione degli sviluppatori e alla capacità di elaborazione disponibile.

I componenti principali di un cluster Kubernetes sono kube-apiserver, etcd, kube-scheduler, kube-controller-manager e cloud-controller-manager:

Server API:
 il server API (Application Programming Interface) di Kubernetes espone l'API Kubernetes (l'interfaccia utilizzata per gestire, creare e configurare i cluster Kubernetes) e funge da punto di ingresso per tutti i comandi e le query.

etcd
: l'etcd è un archivio chiave-valore distribuito open source utilizzato per conservare e gestire le informazioni critiche di cui i sistemi distribuiti hanno bisogno per continuare a funzionare. In Kubernetes, l'etcd gestisce i dati di configurazione, i dati di stato e i metadati.

Scheduler: 
questo componente tiene traccia dei pod appena creati e seleziona i nodi su cui eseguirli. Lo scheduler considera la disponibilità delle risorse e i vincoli di allocazione, i requisiti hardware e software e altro ancora. 

Controller-manager: 
un insieme di controller integrati, il controller-manager Kubernetes esegue un ciclo di controllo che monitora lo stato condiviso del cluster e comunica con il server API per gestire risorse, pod o endpoint di servizio. Il controller-manager è costituito da processi separati che vengono raggruppati per ridurre la complessità ed eseguiti in un unico processo. 

Cloud-controller-manager: 
questo componente ha una funzione simile al collegamento controller-manager. Si collega all'API di un provider di cloud e separa i componenti che interagiscono con tale piattaforma cloud da quelli che interagiscono solo all'interno del cluster.

Componenti del nodo

I nodi di lavoro sono responsabili della distribuzione, dell'esecuzione e della gestione delle applicazioni containerizzate:

Kubelet:
Kubelet è un agente software che riceve ed esegue gli ordini dal nodo master e aiuta a garantire che i container vengano eseguiti in un pod. 

Kube-proxy:
installato su ogni nodo in un cluster, il kube-proxy mantiene le regole di rete sull'host e monitora le modifiche dei servizi e dei pod. 

Altri concetti e terminologia di Kubernetes

  • ReplicaSet: un ReplicaSet mantiene un set stabile di pod di replica per workload specifici. 

  • Distribuzione: la distribuzione controlla la creazione e lo stato dell'applicazione containerizzata e la mantiene in esecuzione.Specifica quante repliche di un pod devono essere eseguite sul cluster.Se un pod non riesce, la distribuzione ne creerà uno nuovo..

  • Kubectl: gli sviluppatori gestiscono le operazioni del cluster usando kubectl, uno strumento di sviluppo costituito da un'interfaccia della riga di comando (CLI) che comunica direttamente con l'API Kubernetes. 

  • DaemonSet: i DaemonSet sono responsabili di garantire che venga creato un pod su ogni singolo nodo del cluster. 

  • Componenti aggiuntivi: i componenti aggiuntivi di Kubernetes estendono le funzioni e includono Cluster DNS (un server DNS che fornisce record DNS a Kubernetes), Web UI (una dashboard di Kubernetes per la gestione di un cluster) e altro ancora. 

  • Servizio: un servizio Kubernetes è un layer di astrazione che definisce un insieme logico di pod e come accedervi. Un servizio espone un'applicazione di rete in esecuzione su uno o più pod in un cluster. Fornisce un modo astratto per bilanciare il carico dei pod.
L'ecosistema Kubernetes

L'ecosistema Kubernetes

Oggi, ci sono oltre 90 offerte Kubernetes certificate (link esterno a ibm.com), comprese piattaforme di gestione di livello aziendale che forniscono strumenti, aggiornamenti e funzionalità aggiuntive che accelerano lo sviluppo e la distribuzione di applicazioni containerizzate. 

Servizi gestiti di Kubernetes Service

Sebbene Kubernetes sia la tecnologia preferita per l'orchestrazione di applicazioni cloud basate su container, per essere completamente funzionante dipende da altri componenti, che vanno dal networking all'ingresso, il bilanciamento del carico, lo storage, l'integrazione continua e la distribuzione continua (CI/CD) e altro ancora. 

Sebbene sia possibile l'hosting autonomo di un cluster Kubernetes in un ambiente basato su cloud, la configurazione e la gestione possono essere complesse per un'organizzazione aziendale. È qui che entrano in gioco i servizi Kubernetes gestiti.

Con i servizi Kubernetes gestiti, il provider in genere gestisce i componenti del piano di controllo di Kubernetes. Il fornitore di servizi gestiti aiuta ad automatizzare i processi di routine per gli aggiornamenti, il bilanciamento del carico, la scalabilità e il monitoraggio. Ad esempio, Red Hat OpenShift è un servizio Kubernetes che può essere distribuito in qualsiasi ambiente e su tutti i principali cloud pubblici, inclusi Amazon Web Services (AWS), Microsoft Azure, Google Cloud e IBM Cloud. Molti provider di cloud offrono anche i propri servizi Kubernetes gestiti.

Strumenti di monitoraggio di Kubernetes

Il monitoraggio di Kubernetes si riferisce alla raccolta e all'analisi dei dati relativi alle caratteristiche di stato di salute, prestazioni e costo delle applicazioni containerizzate in esecuzione all'interno di un cluster Kubernetes.

Il monitoraggio dei cluster Kubernetes consente agli amministratori e agli utenti di tenere traccia dei tempi di attività, dell'utilizzo delle risorse del cluster e dell'interazione tra i componenti del cluster. Il monitoraggio consente di identificare rapidamente problemi come risorse insufficienti, errori e nodi che non possono essere aggiunti al cluster. Le attuali soluzioni di monitoraggio Kubernetes includono strumenti automatizzati per l'application performance management (APM), l'osservabilità, l'application resource management (ARM) e altro ancora.

Mesh di servizi Istio

Kubernetes può distribuire e scalare i pod, ma non è in grado di gestire o automatizzare il routing tra di essi e non fornisce strumenti per monitorare, proteggere o eseguire il debug di queste connessioni.

Con l'aumentare del numero di container in un cluster, il numero di possibili percorsi di connessione tra di essi aumenta in modo esponenziale. Ad esempio, 2 container hanno 2 potenziali connessioni, ma 10 pod ne hanno 90, il che crea una potenziale situazione da incubo per la configurazione e la gestione.

Istio, un service mesh layer configurabile e open source, fornisce una soluzione connettendo, monitorando e proteggendo i container in un cluster Kubernetes. Altri vantaggi significativi includono capacità di debugging migliorate e una dashboard che i team e gli amministratori DevOps possono utilizzare per monitorare la latenza, gli errori di time-in-service e altre caratteristiche delle connessioni tra i container.

Knative e serverless computing

Knative (si pronuncia ‘kay-native') è una piattaforma open source che fornisce una facile soluzione di serverless computing, il modello di sviluppo ed esecuzione di applicazioni di cloud computing che consente agli sviluppatori di creare ed eseguire codice applicativo senza provisioning o gestione di server o infrastrutture di backend.

Anziché distribuire un'istanza continua di codice che rimane inattiva in attesa di richieste, il serverless apre il codice secondo le necessità, lo ridimensiona o diminuisce in base alle fluttuazioni della domanda, e poi lo elimina quando non viene utilizzato. Serverless evita lo spreco di capacità e potenza di elaborazione e riduce i costi perché si paga solo per eseguire il codice quando è effettivamente in esecuzione.

Tekton

Tekton è un framework open-source e vendor-neutral per la creazione di sistemi di integrazione e distribuzione continua (CI/CD), ed è gestito dalla Continuous Delivery Foundation (CDF) (link esterno a ibm.com).Come framework di Kubernetes, Tekton aiuta a modernizzare la distribuzione continua fornendo specifiche settoriali per pipeline, workflow e altri blocchi di costruzione, rendendo così la distribuzione su molteplici provider di cloud o ambienti ibridi più veloce e semplice. 

Vale la pena notare che Tekton è il successore di Knative Build, che è ancora supportato in alcune distribuzioni Knative. Le pipeline Tekton sono diventate lo standard per creare immagini di container e distribuirle in un container registry in un ambiente Kubernetes.

Casi d'uso di Kubernetes

Casi d'uso di Kubernetes

Le organizzazioni aziendali utilizzano Kubernetes per supportare i seguenti casi d'uso, che svolgono tutti un ruolo cruciale nella comprensione della moderna infrastruttura IT. 

Architettura a microservizi o sviluppo cloud-native

Il cloud native è un approccio allo sviluppo del software per la creazione, l'implementazione e la gestione di applicazioni basate su cloud. Il principale vantaggio del cloud native è che consente a DevOps e ad altri team di codificare una volta e di implementare il codice su qualsiasi infrastruttura cloud di qualsiasi fornitore di servizi cloud.

Questo moderno processo di sviluppo si basa sui microservizi, un approccio in cui una singola applicazione è composta da molti componenti o servizi più piccoli, liberamente accoppiati e distribuibili indipendentemente, che vengono distribuiti in container gestiti da Kubernetes.

Kubernetes aiuta a garantire che ogni microservizio disponga delle risorse necessarie per essere eseguito in modo efficace, riducendo al minimo il sovraccarico operativo associato alla gestione manuale di più container.

Ambienti multicloud ibridi

L'hybrid cloud combina e unifica l'infrastruttura del cloud pubblico, del cloud privato e dei data center on-premise per creare un'unica infrastruttura IT flessibile e conveniente.

Oggi, l'hybrid cloud si è fuso con i servizi cloud pubblici multicloud di più fornitori di cloud per creare un ambiente multicloud ibrido.

Un approccio multicloud ibrido crea maggiore flessibilità e riduce la dipendenza di un'organizzazione da un solo fornitore, evitando così il blocco da fornitore. Poiché Kubernetes crea le basi per lo sviluppo cloud-native, è fondamentale per l'adozione del multicloud ibrido.

Applicazioni in scala

Kubernetes supporta la distribuzione di applicazioni cloud su larga scala con la scalabilità automatica. Questo processo consente alle applicazioni di scalare verso l'alto o verso il basso, adattandosi ai cambiamenti della domanda in modo automatico, con velocità, efficienza e tempi di inattività minimi. 

La scalabilità elastica della distribuzione Kubernetes significa che le risorse possono essere aggiunte o rimosse in base alle variazioni del traffico degli utenti, come le vendite flash sui siti web di retail.

Modernizzazione delle applicazioni

Kubernetes fornisce la moderna piattaforma cloud necessaria a supportare la modernizzazione delle applicazioni, la migrazione e la trasformazione delle applicazioni legacy monolitiche in applicazioni cloud basate su microservizi.

Pratiche DevOps

L'automazione è al centro di DevOps, che accelera la consegna di software di qualità superiore combinando e automatizzando il lavoro dei team di sviluppo software e delle operazioni IT.

Kubernetes aiuta i team DevOps a costruire e aggiornare rapidamente le applicazioni, automatizzando la configurazione e la distribuzione delle stesse.

Intelligenza artificiale (AI) e machine learning (ML)

I modelli ML e i modelli linguistici di grandi dimensioni (LLM) che supportano l'AI includono componenti che sarebbero difficili e dispendiosi in termini di tempo da gestire separatamente. Automatizzando la configurazione, la distribuzione e la scalabilità negli ambienti cloud, Kubernetes aiuta a fornire l'agilità e la flessibilità necessarie per addestrare, testare e distribuire questi modelli complessi.

Tutorial Kubernetes

Tutorial Kubernetes

Se desideri iniziare a lavorare con Kubernetes o vuoi sviluppare le tue competenze con Kubernetes e gli strumenti dell'ecosistema Kubernetes, prova uno di questi tutorial:  

Soluzioni correlate

Soluzioni correlate

Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, gli sviluppatori OpenShift hanno a disposizione un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes.

Esplora Red Hat OpenShift
IBM Cloud Kubernetes Service

Implementa cluster sicuri e ad elevata disponibilità in un'esperienza Kubernetes nativa.

Esplora IBM Cloud Kubernetes Service
IBM Cloud Pak for Applications

Ottieni un landscape di applicazioni che si trasforma insieme al tuo business. IBM Cloud Pak for Applications offre la massima flessibilità sia che tu stia creando nuovi servizi e applicazioni cloud-native, sia che stia effettuando il refactoring o il re-platforming di applicazioni esistenti.

Esplora IBM Cloud Pak for Applications
IBM Cloud Satellite

Distribuisci ed esegui app in modo coerente negli ambienti on-premise, di edge computing e cloud pubblico di qualsiasi fornitore di cloud, utilizzando un set comune di servizi cloud tra cui toolchain, database e AI.

Esplora le soluzioni IBM Cloud Satellite
IBM® Cloud Code Engine

IBM Cloud Code Engine, piattaforma serverless completamente gestita, ti consente di eseguire il container, il codice dell'applicazione o il job batch su un runtime del container completamente gestito.

Esplora Code Engine
Risorse

Risorse

Containers in the enterprise

IBM Research documenta il crescente incremento dell’adozione dei container e di Kubernetes.

IT flessibile, resiliente e sicuro per il tuo hybrid cloud

I container fanno parte di una strategia di cloud ibrido che ti consente di creare e gestire i carichi di lavoro ovunque ti trovi.

Cos'è il serverless?

Il serverless è un modello di sviluppo ed esecuzione di applicazioni cloud che consente agli sviluppatori di creare ed eseguire codice senza gestire server e senza dover pagare per le infrastrutture cloud inattive.

Nozioni di base su YAML in Kubernetes

Esplora un esempio di utilizzo di un file YAML in Kubernetes.

Cosa sono i contenitori?

I container sono unità eseguibili di software in cui il codice dell’applicazione viene impacchettato insieme alle librerie e alle dipendenze, secondo modalità comuni, in modo che il codice possa essere eseguito ovunque, che si tratti di desktop, IT tradizionale o cloud.

Cos'è Docker?

Docker è una piattaforma open source che consente agli sviluppatori di creare, distribuire, eseguire, aggiornare e gestire container, componenti standardizzati ed eseguibili che combinano il codice sorgente dell’applicazione con le librerie e le dipendenze del sistema operativo (OS) necessarie per eseguire tale codice in qualsiasi ambiente.

Fai il passo successivo

Red Hat OpenShift on IBM Cloud offre agli sviluppatori un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes. Delega attività noiose e ripetitive che coinvolgono la gestione della sicurezza, la gestione della conformità, la gestione dell'implementazione e la gestione continua del ciclo di vita.

Scopri Red Hat OpenShift su IBM Cloud Inizia gratuitamente