Che cos'è Kubernetes?

Spesso descritto come il "sistema operativo per il cloud", Kubernetes è una piattaforma open source per la gestione di cluster di applicazioni e servizi containerizzati. Sviluppato dagli ingegneri di Google Joe Beda, Brendan Burns e Craig McLuckie nel 2014 e reso open source poco dopo, Kubernetes è diventato presto un fiorente ecosistema cloud native a sé stante. Oggi, Kubernetes, che in greco antico significa "timoniere" o "pilota", è gestito dalla Cloud Native Computing Foundation (CNCF), una divisione di Linux Foundation.

Kubernetes è stato il primo progetto laureato della CNCF ed è diventato uno dei progetti open source in più rapida crescita nella storia. Ora, Kubernetes conta su oltre 2.300 collaboratori ed è stato ampiamente adottato da aziende di grandi e piccole dimensioni, inclusa metà delle aziende Fortune 100.

Termini chiave di Kubernetes 101

Per iniziare, ecco alcuni termini chiave relativi a Kubernetes. È disponibile un elenco più completo nella pagina Glossario standardizzato di Kubernetes. È inoltre possibile utilizzare il foglio di controllo Kubernetes, che contiene un elenco di comandi e flag kubectl comunemente utilizzati.

Cluster

Un set di computer viene definito singolarmente come nodi utilizzati per eseguire applicazioni gestite in container da Kubernetes.

Nodo

È una macchina virtuale o fisica. Un cluster è costituito da un nodo principale e da un numero di nodi lavoratori.

Container cloud

È un'immagine che contiene il software e le relative dipendenze.

Pod

È un singolo container o un set di container in esecuzione nel cluster Kubernetes.

Implementazione

È un oggetto che gestisce le applicazioni replicate rappresentate dai pod. I pod vengono distribuiti sui nodi di un cluster.

Replicaset

Garantisce l'esecuzione contemporanea di un determinato numero di repliche del pod.

Service

Descrive come accedere alle applicazioni rappresentate da un set di pod. I servizi in genere descrivono le porte e i load balancer e possono essere utilizzati per controllare l'accesso interno ed esterno a un cluster.

Che cos'è KubeCon?

KubeCon è la conferenza annuale per sviluppatori e utenti Kubernetes. Dal primo KubeCon nel 2015 con 500 partecipanti, KubeCon è cresciuto fino a diventare un evento importante per la community cloud native. Nel 2019, l'edizione di San Diego di KubeCon ha attirato 12.000 sviluppatori e ingegneri per l'affidabilità del sito che stavano celebrando l'ecosistema open source nato attorno alla piattaforma di orchestrazione cloud Kubernetes.

Che cosa sono i container Kubernetes?

Il funzionamento affidabile del software sta diventando di fondamentale importanza, dato che gli sviluppatori implementano sempre più software per una serie diversificata di ambienti di elaborazione con diversi cloud, ambienti di test, laptop, dispositivi, sistemi operativi e piattaforme. È qui che entrano in gioco i container: raggruppano un'applicazione con l'intero ambiente runtime. In questo senso, i container rappresentano una forma di virtualizzazione poiché forniscono una "bolla" in cui l'applicazione può essere eseguita includendo le librerie, le dipendenze e i sistemi operativi corretti. Tuttavia, i container sono più piccoli delle macchine virtuali perché contengono solo le risorse necessarie all'applicazione.

Kubernetes e Docker a confronto

Sebbene i container Linux esistano dal 2008, sono diventati popolari grazie all'emergere dei container Docker nel 2013. Allo stesso modo, l'interesse per l'implementazione di applicazioni containerizzate, applicazioni contenenti tutto il necessario per essere eseguite, alla fine ha creato un nuovo problema: gestire migliaia di container. Kubernetes orchestra automaticamente il ciclo di vita del container, distribuendo i container nell'infrastruttura di hosting. Kubernetes ridimensiona le risorse, a seconda delle esigenze. Esegue il provisioning, pianifica, elimina e monitora lo stato dei container.

Quali sono i componenti di Kubernetes?

I componenti chiave di Kubernetes sono i cluster, i nodi e il piano di controllo. I cluster contengono nodi. Ogni nodo comprende un insieme di almeno una macchina worker. I nodi ospitano pod che contengono elementi dell'applicazione implementata. Il piano di controllo gestisce nodi e pod nel cluster, spesso su molti computer, per garantire un'elevata disponibilità.

che cos'è Kubernetes

Il piano di controllo contiene quanto segue:

  • Server API Kubernetes: fornisce l'interfaccia di programmazione (API) per il controllo di Kubernetes
  • etcd: area di memorizzazione chiave-valore per i dati del cluster
  • Scheduler Kubernetes: abbina nuovi pod ai nodi disponibili
  • Kubernetes-controller-manager: esegue una serie di processi per gestire gli errori dei nodi, controllare la replica, unire servizi e pod tramite endpoint e controllare account e token di accesso
  • Cloud-controller-manager: aiuta a gestire le API di specifici provider cloud su aspetti come percorsi di infrastruttura specifici e bilanciamento del carico

I componenti del nodo includono:

  • kubelet: un agente che controlla che i container siano in esecuzione in un pod
  • Proxy di rete Kubernetes: gestisce le regole di rete
  • Docker, containerd o un altro tipo di runtime del container

Quali sono i vantaggi di Kubernetes?

Grazie ai container, le applicazioni saranno aggregate a tutto il necessario per essere eseguite. Ma quando aggiungi container, che spesso contengono microservizi, puoi gestirli e distribuirli automaticamente utilizzando Kubernetes.

Con Kubernetes, le organizzazioni possono:

Ridimensionare automaticamente Ridimensiona le implementazioni, a seconda delle esigenze.
Scoprire i servizi Trova servizi containerizzati tramite il DNS o l'indirizzo IP.
Bilanciare i carichi Stabilizza l'implementazione distribuendo il traffico di rete.
Gestire lo storage Scegli lo storage locale o cloud.
Controllare le versioni Scegli i tipi di container che desideri eseguire e quali sostituire utilizzando una nuova immagine o risorse del container.
Mantenere la sicurezza Aggiorna in modo sicuro password, token OAuth e chiavi SSH relative a immagini di container specifiche.

Quali sono le sfide derivanti dall'utilizzo di Kubernetes?

Sebbene Kubernetes sia altamente componibile e possa supportare qualsiasi tipo di applicazione, può essere difficile da comprendere e utilizzare. Kubernetes non è sempre la soluzione corretta per un determinato carico di lavoro, come segnalato da numerosi membri della CNCF. Ecco perché l'ecosistema Kubernetes contiene una serie di strumenti cloud native correlati che le organizzazioni hanno creato per risolvere problemi specifici del carico di lavoro.

Kubernetes distribuisce container, non codice sorgente, e non crea applicazioni. Per la registrazione, il middleware, il monitoraggio, la configurazione, CI/CD e molte altre attività di produzione, saranno necessari strumenti aggiuntivi. Kubernetes è estensibile e ha dimostrato di essere adatto a un'ampia varietà di casi d'uso, dagli aerei a reazione al machine learning. In effetti, i fornitori di cloud tra cui Oracle, Google, Amazon Web Services e altri hanno utilizzato l'estensibilità di Kubernetes per creare Kubernetes gestiti, che sono servizi che riducono la complessità e aumentano la produttività degli sviluppatori.

Che cos'è Kubernetes gestito?

Il cloud nativo e Kubernetes trasformano il modo in cui AgroScout supporta i framer.

Oracle Cloud InfrastructureContainer Engine for Kubernetes è un servizio gestito, rivolto agli sviluppatori, che puoi utilizzare per implementare le applicazioni containerizzate nel cloud. Usa Container Engine for Kubernetes quando il tuo team di sviluppo desidera creare, implementare e gestire in modo affidabile applicazioni cloud native. Ti basta specificare le risorse di elaborazione richieste dalle tue applicazioni e Container Engine for Kubernetes ne esegue il provisioning su una tenancy Cloud Infrastructure esistente.

Sebbene non sia necessario utilizzare un servizio Kubernetes gestito su Oracle Cloud Infrastructure, Container Engine for Kubernetes rappresenta un modo semplice per eseguire cluster altamente disponibili con il controllo, la sicurezza e le performance prevedibili di Oracle Cloud Infrastructure. Container Engine for Kubernetes supporta macchine bare metal e virtuali come nodi ed è certificato come conforme dalla CNCF. Ottieni anche tutti gli aggiornamenti Kubernetes e mantieni la compatibilità con l'ecosistema della CNCF senza alcun intervento aggiuntivo.


L'ecosistema e la comunità di Kubernetes

Oracle è un membro Platinum della Cloud Native Computing Foundation (CNCF), una comunità open source che supporta diverse decine di progetti di sviluppo software organizzati per livello di maturità. I progetti laureati (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF ed Helm) sono stati preziosi per lo sviluppo del cloud native.

Come iniziare a utilizzare Kubernetes

Kubernetes ha un ampio ecosistema di progetti di supporto nati attorno a esso. Il panorama può essere scoraggiante e cercare risposte a semplici domande può portare in un vicolo cieco. Ma i primi passi lungo questo percorso sono semplici e permettono di esplorare concetti avanzati secondo le proprie esigenze. Scopri come:

  • Configurare un ambiente di sviluppo locale con Docker e Kubernetes
  • Creare un microservizio semplice Java con Helidon
  • Realizzare il microservizio in un'immagine container con Docker
  • Implementare il microservizio su un cluster Kubernetes locale
  • Ridimensionare il microservizio nel cluster

Kubernetes per gli sviluppatori

Gli sviluppatori desiderosi di avviare il primo progetto Kubernetes possono consultare il nostro portale degli sviluppatori, dove potranno imparare a creare la prima applicazione Arm su Kubernetes o a distribuire un cluster Kubernetes utilizzando la shell cloud.


Introduzione a Kubernetes su OCI (8:32)