Capire Kubernetes e Docker è uno degli argomenti più importanti del cloud nativo e DevOps. Mentre Kubernetes e Docker appartengono sicuramente a una conversazione, la verità è che non dovrebbero necessariamente essere confrontati tra loro. Infatti, Kubernetes e Docker non sono in diretta competizione tra loro. Considerali invece come due tecnologie complementari e compatibili.
Come si fa a sapere a quali di queste circostanze potresti far fronte? Per saperlo, è importante capire prima le aree specifiche in cui Kubernetes e Docker si sovrappongono e si contrappongono.
Docker è una piattaforma open source dedicata ai container di applicazioni. Se il concetto è nuovo per te, un container è un formato di packaging autonomo che inserisce tutti i codici e le dipendenze necessari in un formato eseguibile. Per utilizzare un'analogia reale, un container è come un pacchetto IKEA con tutti i pezzi, le staffe e le viti (e la chiave esagonale, naturalmente) ma oltre a contenere tutti i pezzi, costruisce la scrivania per te quando è in esecuzione.
Il Docker viene spesso utilizzato dagli sviluppatori delle applicazioni grazie al suo formato leggero e standardizzato. Queste caratteristiche consentono agli sviluppatori di creare, testare e implementare con flessibilità e scalabilità.
Docker ha anche un altro significato nell'ambito IT, ossia si riferisce a un'azienda effettivamente chiamata Docker, Inc. L'azienda sviluppa strumenti per lavorare all'interno della piattaforma. Questa differenza è importante da notare, data la sovrapposizione dei nomi.
Se Docker è un singolo container, Kubernetes è uno strumento per gestire contemporaneamente molti container. Come Docker (la piattaforma e non l'azienda), Kubernetes è una piattaforma open source, anche se viene gestita da Cloud Native Computing Foundation come progetto con oltre 2.300 collaboratori. Kubernetes funziona come un sistema operativo per il cloud, semplificando la gestione su macchine virtuali e cloud, in modo che i dipartimenti IT possano gestire le cose su larga scala.
Che cos'è in grado di fare Kubernetes? Kubernetes funziona in modo simile a qualsiasi tipo di gestione del sistema presente in un sistema locale, sulla base di un container. Provisioning, aggiornamenti, pianificazioni, eliminazioni e monitoraggio dello stato generale sono tutti alla portata di Kubernetes. Per tornare all'analogia IKEA, se un container è un'unica scrivania, Kubernetes è come il facilities manager che abilita l'ordine, controlla la distribuzione e verifica lo stato di scrivanie, sedie e altri mobili imballati nel magazzino IKEA.
Una parte mancante in qualsiasi discussione su Docker e Kubernetes è la definizione di runtime dei container. Che cos'è un runtime di container? In breve, è il motore che esegue il container (tornando all'analogia IKEA), mentre i runtime del container sono le istruzioni di assemblaggio all'interno della scatola. In alcuni casi, si tratta di una procedura semplice e la gestione delle esecuzioni viene gestita all'interno di quella che viene definito il runtime di container di livello inferiore. Per situazioni più complesse, i runtime dei container di alto livello forniscono la direzione necessaria per l'integrazione delle API, i formati delle immagini e la gestione delle immagini. In alcuni casi, il termine può essere utilizzato in modo intercambiabile con Docker, anche se ci sono un po' di sfumature in più.
Kubernetes esegue un'API nota come interfaccia CRI (Container Runtime Interface). Si interfaccia con ogni runtime del container per eseguire il pacchetto. Anche in questo caso, utilizzando l'analogia IKEA, CRI di Kubernetes è la persona che legge le istruzioni di assemblaggio (runtime container) all'interno del pacchetto (container).
Esistono altri runtime di container oltre a Docker. Due altri famosi sono:
Containerd: Containerd è stato avviato nell'ambito del progetto Docker. Tuttavia, l'obiettivo era rendere Docker più flessibile e modulare, così gli sviluppatori hanno scelto di separare Containerd nel proprio progetto. Containerd gestisce esigenze di runtime dei container di alto livello, come il pull delle immagini dai registri, la gestione delle immagini e l'integrazione con runtime di basso livello per eseguire il processo dei container.
CRI-O: CRI-O è un'altra alternativa di runtime di container open source a Docker. Implementa l'interfaccia CRI (Container Runtime Interface) di Kubernetes per abilitare i runtime compatibili con lo standard Open Container Initiative.
Sia CRI-O che Containerd utilizzano le specifiche fornite da CRI, rendendole completamente compatibili con Kubernetes.
La differenza tra Docker e Kubernetes viene spesso discussa, ma la verità è che i due non sono in competizione diretta tra loro. L'analogia con IKEA utilizzata in questo articolo mostra come sono correlati e perché sono fondamentali per eseguire una gestione IT moderna, ma non concorrenti in nessun modo. Fanno invece parte dell'ecosistema nativo del cloud. I container Docker fanno parte della gestione di Kubernetes e il vantaggio di Kubernetes è la possibilità di eseguire facilmente la scalabilità del volume dei container Docker.
Pertanto, la domanda non è "Scelgo Docker o Kubernetes?" Invece, la considerazione principale per i direttori IT è come utilizzeranno Kubernetes e Docker insieme in termini di gestione e operations.
Kubernetes e Docker sono progettati per lavorare insieme. Sebbene non sia necessario utilizzare Kubernetes per gestire una distribuzione Docker, sono una tandem efficace nei casi in cui è necessario gestire più istanze di distribuzioni. Ciò vale in particolare per le situazioni in cui vengono utilizzate più distribuzioni della stessa applicazione, nonché quando è necessario il ridimensionamento. La natura open source del sistema di orchestrazione Kubernetes garantisce una piattaforma supportata in modo continuativo che gestisce le complessità in più server.
Da Kubernetes è possibile distribuire e gestire numerosi pacchetti Docker mediante funzioni quali l'elaborazione in batch di patch e aggiornamenti e il monitoraggio su larga scala dei problemi, il tutto gestendo le richieste su richiesta. Con Kubernetes, i dipartimenti IT possono effettuare le operazioni riportate di seguito.
Oracle Cloud Infrastructure offre una serie di servizi per accelerare e creare applicazioni cloud native moderne. In particolare, Container Engine for Kubernetes e Container Registry, che gestiscono e analizzano le immagini Docker, sono strumenti efficaci e gratuiti (inclusi) che semplificano la gestione e aumentano le performance. Prova Oracle Cloud gratuitamente per accedere a Kubernetes.
Dopo la chiusura a marzo 2020 del Parco Archeologico di Pompei in Italia, qualsiasi progetto di riapertura richiedeva una misura di gestione e di controllo per garantire il distanziamento sociale. Si è pensato di consentire ai turisti di accedere a una nuova applicazione MyPompeii basata su una serie di prodotti Oracle selezionati per accelerare una soluzione mobile nativa per il cloud, tra cui Oracle Container Engine for Kubernetes e Oracle Container Registry.
Snap Vision, con sede a Londra, fornisce una tecnologia di ricerca visiva basata sull'intelligenza artificiale per aiutare gli acquirenti a scoprire i vestiti che amano. Poiché COVID-19 ha costretto i negozi a chiudere sostanzialmente per lunghi periodi, la tecnologia di Snap Vision è stata offerta ai retailer britannici per contribuire alla creazione di un'esperienza di acquisto digitale. La scalabilità è stata una sfida importante, sebbene Snap Vision sia stata in grado di ospitare nuovi ambienti retailer a basso costo grazie a Oracle Cloud Infrastructure con Kubernetes.