Kubernetes
sfondo nero e blu
Cos'è Kubernetes?

Kubernetes è una piattaforma di orchestrazione dei contenitori open source che automatizza l'implementazione, la gestione e la scalabilità delle applicazioni. Scopri come Kubernetes consente una distribuzione sviluppo cloud-native coveniente.

Kubernetes, noto anche come “k8s” o “kube”, è una piattaforma di orchestrazione di contenitori  per la pianificazione e l'automazione della distribuzione della gestionee del ridimensionamento di  applicazioni.

Kubernetes è stato sviluppato inizialmente dagli ingegneri di Google, prima di diventare open source nel 2014. Si tratta di un discendente di Borg, una  piattaforma di orchestrazione di contanier utilizzata internamente da Google. Kubernetes è greco per questo abbiamo il  timoniere oppure il pilota, nel Logo Kubernetes  (il collegamento risiede al di fuori di ibm.com).

.

Oggi, Kubernetes ed il più ampio  ecosistema si stanno evolvendo in una piattaforma di elaborazione e in un ecosistema per uso generale che compete o supera con le macchine virtuali (VMs) come elementi costitutivi delle moderne infrastrutture e applicazioni cloud. Questo ecosistema consente alle organizzazioni di fornire un'elevata produttività Platform-as-a-Service (PaaS) che affronta molteplici compiti e problemi relativi alle infrastrutture e alle operazioni che circondano cloud-native  lo sviluppo in modo che i team di sviluppo possano concentrarsi esclusivamente sulla codifica e sull'innovazione.     

Il seguente video fornisce un'ottima introduzione alle nozioni di base di Kubernetes:

Container nelle aziende: una nuova ricerca IBM documenta un momento di grande espansione di container e Kubernetes.

Leggi l'e-book (1,4 MB)


Cosa sono i contenitori?

Contenitori sono componenti applicativi leggeri ed eseguibili che combinano il codice sorgente dell'applicazione con tutte le librerie del  sistema operativo (SO) e delle  dipendenze  necessarie per eseguire il codice in qualsiasi ambiente.

I contenitori usufruiscono di una forma di  sistema operativo  (OS)  che consente a più applicazioni  di condividere il sistema, isolando i processi e controllando la quantità di CPU, memoria e disco accessibile  dai processi. Perché sono più piccoli, più efficienti in termini di risorse e più portatili delle macchine virtuali (VM), i contenitori sono diventati di fattounità di  calcolo  moderno di applicazionicloud-native 

In unrecente studio IBM  (PDF, 1.4 MB) gli utenti hanno segnalato diversi vantaggi tecnici e commerciali specifici derivanti dall'adozione di contenitori e tecnologie correlate. .

Contenitori, macchine virtuali e infrastruttura tradizionale

Può essere più facile o più utile considerare i contenitori come ultima fase del processo di automazione e astrazione dell'infrastruttura IT

.

Nelle infrastrutture tradizionali, le applicazioni vengono eseguite su un server fisico e utilizzano tutte le risorse disponibili. Ciò lascia all'utente la scelta di eseguire più applicazioni su un singolo server, auspicando che un'applicazione non utilizzi risorse a scapito delle altre o di dedicare un server alle applicazioni, il che però costringe a rinunciare alla scalabilità.

Le macchine virtuali (VM) sono server astratti dall'hardware del computer fisico, che permettono di eseguire più VM su un solo server fisico o una singola VM, estesa su più di un server fisico. Ogni VM esegue la propria istanza del sistema operativo ed è possibile isolare ogni applicazione in una VM, riducendo la possibilità che le applicazioni in esecuzione sullo stesso hardware fisico si disturbino a vicenda. Le VM sfruttano meglio le risorse e sono molto più facili e convenienti da scalare rispetto alle infrastrutture tradizionali. È inoltre possibile smaltirle quando non hai più bisogno di eseguire l'applicazione, eliminando la VM.

Per ulteriori informazioni sulle VM, consultare "Virtual Machines: An Essential Guide."

I contenitori portano questa astrazione ad un livello superiore, nello specifico, oltre a condividere l'hardware virtualizzato sottostante, condividono anche un kernel di Sistema Operativo virtualizzato. I contenitori offrono lo stesso isolamento, la scalabilità e la disponibilità delle VM, ma poiché non devono gestire il carico dell'istanza del sistema operativo, sono più leggere (cioè occupano meno spazio) rispetto alle VM. Sono più efficienti in termini di risorse, consentono di eseguire più applicazioni su minori macchine (virtuali e fisiche), con meno istanze del Sistema Operativo. I contenitori sono più facilmente portatili su desktop, data center e ambienti cloud. Sono la soluzione ideale per i metodi di sviluppo Agile e DevOps.

"Contenitori: una guida essenziale" Dà una completa spiegazione di contenitori edi containerizzazione. E il messaggio del blog "Container vs VM: qual è la differenza ?" fornisce una completo delle differenze.

Cos'è Docker?

Docker è lo strumento più utilizzato per la creazione e l'esecuzione di contenitori Linux®. Mentre le forme iniziali di contenitore sono state introdotte decenni fa (con tecnologie quali FreeBSD Jails e le partizioni del carico di lavoro di AIX), i contenitori sono stati distribuiti al pubblico nel 2013 quando Docker li ha resi comunemente disponibili con una nuova implementazione adatta a sviluppatori e cloud.

Docker è iniziato come progetto open source, ma oggi fa anche riferimento alla Docker Inc., la società che produce Docker, un toolkit di contenitori commerciale che si basa sul progetto open source (e ne fornisce le migliorie alla comunità open source).

Docker è basato sulla tecnologia LXC (Linux Container) tradizionale, ma assicura una virtualizzazione maggiormente granulare dei processi del kernel Linux e aggiunge funzioni per semplificare lo sviluppo, la gestione e la protezione da parte degli sviluppatori.

Nonostante oggi esistano piattaforme per contenitori alternative (quali Open Container Initiative (OCI), CoreOS e Canonical (Ubuntu) LXD), Docker è così largamente preferito che è praticamente diventato sinonimo di contenitore e a volte viene scambiato come concorrente di tecnologie all'avanguardia come Kubernetes (guarda il video "Kubernetes vs, Docker: It’s Not an Either/Or Question”).

Flessibile, resiliente, proteggere tecnologie dell'informazione (IT) per il proprio cloud ibrido - I contenitori orchestrati utilizzando Kubernetes fanno parte di una strategia cloud ibrido aperta che ti consente di costruire e gestire carichi di lavoro da qualsiasi luogo, senza alcun blocco dal fornitore.

Ulteriori informazioni


Orchestrazione dei contenitori con Kubernetes

Poiché i contenitori proliferano, oggi un'organizzazione può averne a centinaia o migliaia, i team operativi hanno dovuto pianificarne e automatizzarne la distribuzione,la rete la scalabilità e la disponibilità. Così è nato il mercato dell'orchestrazione dei contenitori.

Mentre altre opzioni di orchestrazione dei contenitori, in particolare Docker Swarm e Apache Mesos, hanno ottenuto  qualche consenso finora, Kubernetes è diventata rapidamente la piattaforma più adottata (infatti, a un certo punto, è stato il progetto in più rapida crescita nella storia del software open source).

Gli sviluppatori hanno scelto di continuare a preferire Kubernetes per la sua ampiezza di funzione vasta e in crescita ecosistema di codice sorgente aperto strumenti supporto, e la sua assistenza e portabilità attraverso servizio cloud  fornitori. Tutti i principali provider  di cloud pubblico inclusi  Amazon Web Services (AWS), Google Cloud, Cloud IBM e Microsoft Azure — offrono servizi Kubernetes completamente gestiti  

.

Per ulteriori informazioni sull'orchestrazione dei contenitori": vedere il video "Container Orchestration Explained":

Cosa fa Kubernetes?

Kubernetes pianifica e automatizza attività relative ai contenitori in tutto il ciclo di vita dell' applicazione  tra cui:

  • Distribuzione:  Distribuisce un numero definito di contenitori su un host specifico e li esegue in uno stato desiderato.
  • Rollout:  Un rollout è una modifica ad una distribuzione. Kubernetes consente di avviare, mettere in pausa, riprendere o eseguire il ripristino dei rollout.
  • Servizio in rilevazione : Kubernetes possono automaticamente esporre un contenitore a Internet o ad altri contenitori utilizzando un DNS (domain name server) nome o  indirizzo IP.
  • Imposta Kubernetes per caricare lo storage locale  o  cloud persistente per i propri contenitori, a seconda delle esigenze.
  • Bilanciamento del carico: in base all'utilizzo o alle metriche della  CPU personalizzata il bilanciamento del carico Kubernetes  può distribuire il carico di lavoro sulla rete per mantenere prestazioni e stabilità: 
  • Scalabilità automatica: Quando il traffico aumenta, Kubernetes scalabilità automatica  può avviare nuovi cluster a seconda della necessità per gestire il carico di lavoro aggiuntivo.
  • Riparazione automatica per Alta scalabilità: Quando un contenitore si guasta, Kubernetes può riavviarlo o sostituirlo automaticamente per impedire  tempi di inattività. Può anche eliminare contenitori che non soddisfano i requisiti del controllo sanitario.

Kubernetes vs Docker

Se hai letto fino a questo punto, si è già capito che, mentreKubernetes è un' alternativa a Docker Swarm, nonè (contrario al fraintedimento popolare permanente) alternativa o concorrente allo stesso Docker

.

Infatti, se hai scelto con entusiasmo Docker e stai creando implementazioni di contenitori su larga scala basate su Docker, l'orchestrazione di Kubernetes è un passo logico successivo per la gestione di questi carichi di lavoro. Per ulteriori informazioni, vedere "Kubernetes vs. Docker: It’s Not an Either/Or Question":

Prodotti in evidenza

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite

IBM Cloud Code Engine

IBM Cloud Kubernetes Service


Architettura Kubernetes

I componenti principali dell'architettura Kubernetes includono:

Cluster e nodi (elaborazione)

I cluster  sono blocchi di creazione dell'architettura Kubernetes. I cluster sono composti da  nodi ognuno dei quali rappresenta un singolo host  computer  o (macchina virtuale o fisica).

Ogni cluster è costituito dal nodo master che funge da piano di controllo per il cluster, e da molteplici nodi worker che distribuiscono eseguono e gestiscono applicazioni containerizzate . Il nodo principale esegue un servizio di pianificazione che  automatizza  quando e dove i contenitori vengono implementati in base ai requisiti di implementazione impostati dagli sviluppatori e alla capacità di calcolo disponibile. Ciascun nodo worker include lo strumento che viene utilizzato per gestire contenitori come ad esempio Docker  un agent software chiamato  Kubelet che riceve ed esegue ordini dal nodo master.

Gli sviluppatori gesticono operazioni cluster utilizzando kubect, una riga comandi di interfaccia (cli) che comunica direttamente con  Kubernetes l'interfaccia di programmazione delle applicazioni  (API) application programming interface. 

Per un ulteriore approfondimento sul  Cluster Kubernetes, verificare il seguente post sul blog: "Cluster Kubernetes: architettura per la distribuzione rapida e controllata delle app cloud."

Pod e implementazioni (software)

Pods sono gruppi di contenitori che condividono le stesse risorse di elaborazione e la stessa rete. Ci sono anche unità di scalabilità in kubernetes: se un contenitore in un pod riceve più traffico di quanto ne possa gestire, kubernetes replicherà il pod su altri nodi nel cluster. Per questo motivo si consiglia di mantenere compatti i pod, in modo che contengano solo i contenitori che devono condividere le risorse.

La distribuzione controlla la creazione e lo stato dell'applicazione containerizzata e la mantiene in esecuzione. Specifica quante repliche di un pod devono essere gestite sul cluster. Se un pod si guasta, l'implementazione provvede a crearne uno nuovo.

Per ulteriori distribuzioni su Kubernetes vedere "kubernetes Deployments: Get Started Fast":

Link correlati

IBM Cloud Pak


Service mesh Istio

Kubernetes può implementare e scalare i pod, ma non può gestire o automatizzare il routing tra i pod e non fornisce strumenti per monitorare, proteggere o eseguire il debug di queste connessioni. Con il crescere del numero di contenitori in un cluster, aumenta in modo esponenziale il numero di possibili percorsi di connessione tra di essi (ad esempio, due contenitori hanno due connessioni potenziali, ma 10 pod ne hanno 90), creando potenzialmente una configurazione e gestione da incubo.

Entra in Istio, un livello mesh open source per i cluster Kubernetes. Ad ogni cluster Kubernetes, Istio aggiunge un contenitore, sostanzialmente invisibile al programmatore e all'amministratore, che configura, monitora e gestisce le interazioni tra gli altri contenitori.

Con Istio puoi definire un unico criterio che configura le connessioni tra i contenitori, in modo da non dover configurare singolarmente ogni connessione. Ciò semplifica il debug delle connessioni tra i contenitori.

Istio fornisce anche un dashboard che i team e gli amministratori DevOps possono utilizzare per monitorare la latenza, gli errori time-in-service e altre caratteristiche delle connessioni tra i contenitori. E incorpora funzioni di sicurezza - nello specifico, la gestione dell'identità che non consente agli utenti non autorizzati di effettuare una  chiamata di servizio di spoofing tra contenitori - oltre a funzioni di autenticazione, autorizzazione e auditing (AAA) che i professionisti della sicurezza possono utilizzare per monitorare il cluster.

Consultare l'articolo "" Cos'e Istio? per ulteriori dettagli, inclusi i video e alcuni esempi di Istio in uso.


Knative e l'elaborazione serverless

Knative (pronunciato 'kay-native') è una piattaforma open source che si snoda in cima a Kubernetes e fornisce due importanti tipologie di vantaggi per lo sviluppo nativo per cloud:

Knative fornisce un facile accesso all'elaborazione serverless

Il Serverless computing è un modo relativamente nuovo per implementare il codice che aumenta l'efficienza e la convenienza delle applicazioni native. Invece di implementare un'istanza continua del codice che resta inattiva in attesa di richieste, l'elaborazione serverless fornisce il  codice all'evenienza, con scalabilità orizzontale o verticale in base alle esigenze, disattivandolo quando non viene utilizzato. L'elaborazione serverless previene lo spreco della capacità di calcolo e riduce i costi, poiché solo il codice effettivamente eseguito è a pagamento.

Knative consente agli sviluppatori di progettare un contenitore una volta e di eseguirlo come servizio softwareo come funzione serverless. È tutto trasparente per lo sviluppatore: Knative gestisce i dettagli in background e lo sviluppatore può focus su codificare.

Knative semplifica lo sviluppo e l'orchestrazione dei contenitori

Per gli sviluppatori, la containerizzazione del codice richiede una serie di passaggi ripetitivi e l'orchestrazione dei contenitori richiede molte attività di configurazione e creazione di script (come ad esempio la generazione di file di configurazione, installazione delle dipendenze, gestione della registrazione dei log e del tracciamento e la creazione di script (CI/CD

).

Knative semplifica queste attività, automatizzandole attraverso tre componenti:

  • il componente Build  di Knative trasforma automaticamente il codice sorgente in una funzione o un  contenitore  nativo per il cloud. Nello specifico, esegue il pull del codice dal repository, installa le dipendenze  richieste, crea  l'immagine del contenitore e la trasferisce in un registro dei contenitori per essere utilizzata da altri sviluppatori. Gli sviluppatori hanno la necessità di specificare l'ubicazione di questi componenti in modo che Knative può trovarli, ma una volta fatto, Knative automatizza  la costruzione.
  • Serve: Il componente Serve gestisce contenitori come servizi scalabili; può scalare fino a migliaia di istanze di contenitore o ridimensiona in basso a nessuno (chiamato ridimensionamento a zero ). Inoltre, Serve ha due funzioni molto utili: configurazione, che salva le versioni di un contenitore (chiamato snapshot) Ogni volta che si esegue il push del contenitore in produzione e consente l'esecuzione di quelle versioni contemporaneamente; e routing del servizio, che consente di indirizzare diverse quantità di traffico verso queste versioni. È possibile utilizzare queste funzioni contemporaneamente per eseguire gradualmente il rollout del contenitore o per effettuare un canary test  di un'applicazione containerizzata  prima di avviarne la produzione globale.
  • Event:  Event consente agli eventi specificati di attivare servizi o funzioni basati sui contenitori. Ciò è parte integrante soprattutto delle funzionalità  serverless  di Knative: è necessario che una risorsa indichi al sistema di fornire una funzione quando necessario. Event consente ai team di esprimere "interesse" in alcuni tipi di eventi e quindi si connette automaticamente all'autore dell'evento ed esegue gli eventi nel contenitore, eliminando la necessità di programmare queste connessioni.

Per saperne di più su Knative consultare "Knative: An Essential Guide ."


L'impegno di Kubernetes GitHub e ulteriori dimostrazioni della sua crescente popolarità

Kubernetes è uno dei progetti open source in più rapida crescita della storia, e il suo successo non accenna a diminuire. Gli sviluppatori e le aziende lo utilizzano sempre di più. È importante tenere presente alcuni punti cardine:

  • In questo momento sono stati effettuati oltre 120.190 commit al repository Kubernetes attivo GitHub  (link esterno a ibm.com) — un aumento di quasi 34.000 commit negli ultimi 18 mesi — e ce ne sono più di 3.100 attivi contributori di progetto. Secondo la  Cloud Native Computing Foundation (CNCF)  ci sono stati più di 148.000 commit in tutti i repository kubernetes-correlati (tra cui kubernetes Dashboard e kubernetes MiniKube). Si possono leggere tutte le statistiche qui  (il collegamento risiede al di fuori di ibm.com).
  • Più di 2.000 aziende utilizzano Kubernetes nei loro stack di software di produzione. Tra queste vi sono note aziende come AirBnB, Bose, CapitalOne, Intuit, Nordstrom, Philips, Reddit, Slack, Spotify, Tinder e, ovviamente, IBM. Consultare questi e altri casi di studio e altre adozione di carattere maiuscolo/minuscolo (link esterno a ibm.com)
  • Uno studio del 2021 citato in Container Journal (link risiede outside ibm.com) ha rilevato che il 68% dei tecnologie dell'informazione (IT) ha aumentato l' uso di Kubernetes durante la pandemia di COVID-19.
  • Secondo ZipRecruiter (link esterno a IBM), lo stipendio medio annuo (in Nord America) per un lavoro correlato a Kubernetes è di 147,732. Dollari USA. Nel momento in cui scriviamo ce ne sono attualmente più di 57.000 Posizioni relative a Kubernetes elencate suLinkedIn (link esterno a ibm.com), rispetto alle 21.000 posizioni elencate solo 18 mesi fa.

Kubernetes e IBM Cloud

I contenitori sono ideali per modernizzare le proprie applicazioni e ottimizzare l'infrastruttura IT. Costruita su Kubernetes e altri strumenti nell' ecosistema open-source Kubernetes, i servizi contenitore di Cloud IBM possono facilitare e accelerate tuo percorso verso cloud-native verso lo sviluppo di applicazioni cloud-native e verso un approccio cloud ibrido aperto che integra le migliori caratteristiche e funzioni del cloud privato, cloud pubblico e on-premises  ed infrastruttura IT.

Passa alla fase successiva:

  • Scopri come è possibile distribuire ad alta disponibilità e completamente gestito il cluster kubernetes per le applicazioni containerizzate con un singolo clic usando Red Hat OpenShift su IBM Cloud.
  • Distribuire e gestire applicazioni containerizzate in modo coerente  attraverso ambienti on-premises, edge computing e cloud pubblico da qualsiasi fornitore con IBM Cloud Satellite.
  • Esegue  immagini di contenitori, lavori batch o codice origine come carico di lavoro serveless- nessun dimensionamento, distribuzione, rete o scala richiesti - con IBM Cloud Code Engine.
  • Distribuisci applicazioni sicure ad alta disponibilità in un'esperienza nativa Kubernetes utilizzandoServizio Cloud IBM.

Per iniziare subito, registrarsi per un account  IBM  Cloud.


Soluzioni correlate

Soluzioni di modernizzazione delle applicazioni

Crea, modernizza e gestisci le applicazioni in modo sicuro su qualsiasi cloud con fiducia.


Soluzioni di infrastruttura ibrido

Una strategia di cloud ibrido open source consente di creare e gestire i carichi di lavoro da qualsiasi ubicazione, senza vincoli imposti dal fornitore.


Soluzioni di cloud ibrido

Sfrutta le soluzioni infrastrutturali on-premises aperte, flessibili e sicure per sbloccare la tua strategia di cloud ibrido.


Red Hat OpenShift

Implementa cluster ad alta disponibilità e completamente gestiti con un semplice clic.


Soluzioni Cloud Satellite

Scopri gli insight nascosti nei dati che possono aiutarti a risolvere problemi di business e di ricerca.


Soluzioni per motori di codice

Eseguire il contenitore, il codice applicativo o il lavoro batch su un contenitore in esecuzione completamente gestito.