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:
Leggi l'e-book (1,4 MB)
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. .
.
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.
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”).
Ulteriori informazioni
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":
Kubernetes pianifica e automatizza attività relative ai contenitori in tutto il ciclo di vita dell' applicazione tra cui:
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":
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
IBM Cloud Code Engine
IBM Cloud Kubernetes Service
I componenti principali dell'architettura Kubernetes includono:
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."
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":
IBM Cloud Pak
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 (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:
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.
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:
Per saperne di più su Knative consultare "Knative: An Essential Guide ."
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:
Se sei pronto a iniziare a lavorare con Kubernetes o stai cercando di sviluppare le tue competenze con Kubernetes e gli strumenti dell'ecosistema Kubernetes, prova una di queste esercitazioni:
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:
Per iniziare subito, registrarsi per un account IBM Cloud.
Crea, modernizza e gestisci le applicazioni in modo sicuro su qualsiasi cloud con fiducia.
Una strategia di cloud ibrido open source consente di creare e gestire i carichi di lavoro da qualsiasi ubicazione, senza vincoli imposti dal fornitore.
Sfrutta le soluzioni infrastrutturali on-premises aperte, flessibili e sicure per sbloccare la tua strategia di cloud ibrido.
Implementa cluster ad alta disponibilità e completamente gestiti con un semplice clic.
Scopri gli insight nascosti nei dati che possono aiutarti a risolvere problemi di business e di ricerca.
Eseguire il contenitore, il codice applicativo o il lavoro batch su un contenitore in esecuzione completamente gestito.