Kubernetes

Kubernetes contro Docker

Kubernetes contro Docker
Kubernetes e Docker sono in aumento. Entrambe le tecnologie hanno radici molto diverse ma negli ultimi anni si sono intrecciate in modi che nessuno si aspettava. Le comunità si sono riunite, i pacchetti sono stati portati tra tutti i possibili sistemi operativi ed essendo in gran parte open source hanno dato origine a una pletora di progetti satellitari e concorrenti.

Tutto questo può essere travolgente per qualsiasi nuovo utente che cerca di dare un senso a questo paradigma relativamente nuovo. Discutiamo le principali differenze tra Kubernetes e Docker approfondendo prima di tutto il significato reale delle tecnologie. Se hai familiarità con Docker o K8 (abbreviazione di Kubernetes), puoi saltare avanti e leggere la sezione TL;DR.

Cos'è Docker?

Docker è una tecnologia di containerizzazione. Puoi eseguire più applicazioni tutte isolate l'una dall'altra sullo stesso sistema operativo senza bisogno di virtualizzazione ma tutti i vantaggi di un ambiente virtualizzato. Pensa ai container Docker come VM davvero leggere per Linux (anche Windows, ma non è così popolare).

Docker ha 3 componenti principali, in primo luogo il motore Docker che viene eseguito in background e gestisce i container in esecuzione e il loro provisioning. Espone un'API REST che il client Docker consuma e ciò consente agli utenti di interagire con Docker e creare nuovi contenitori o gestire quelli in esecuzione.

Docker, tuttavia, è una singola applicazione di sistema system. Ciò significa che esegue e gestisce i contenitori su qualsiasi sistema su cui si trova in esecuzione.  Enormi applicazioni con tonnellate di traffico e milioni di richieste che le raggiungono da tutto il mondo richiedono più di un server. È qui che entra in gioco Kubernetes.

Cos'è Kubernetes??

Kubernetes sfrutta le tecnologie di containerizzazione, come Docker, per eseguire più repliche della tua applicazione su server e data center in tutto il mondo.

Una delle tecnologie di containerizzazione utilizzate da Kubernetes è Docker. Kubernetes consiste in un'intera gamma di software diversi per la gestione del tuo cluster. Fornisce un agente di gestione kubeadm, che viene eseguito su alcuni nodi master selezionati (i nodi sono VPS o server fisici) e poi ci sono nodi di lavoro con Docker installato su di essi con un kubectl che comunica con il motore Docker per automatizzare il processo di rotazione o smontaggio dei contenitori. Gli agenti kubectl in esecuzione su tutti i nodi di lavoro prendono ordini dal nodo master e danno loro un feedback sullo stato dell'applicazione in esecuzione sul loro nodo. Questo è più o meno come funziona in genere un'installazione di K8.

Puoi anche aggregare diversi contenitori Docker correlati in pacchetti (chiamati pod). Ad esempio, puoi mettere insieme database SQL e contenitori di cache Redis in un pod, poiché vuoi che il database e la sua cache coesistano.

Allo stesso modo, puoi esporre i pod agli altri pod come servizi (noti anche come microservizi) in modo da poter avere 50 pod SQL/Redis esposti come servizio datastore al front-end della tua applicazione e così via. Il vantaggio che ottieni è che i 50 pod potrebbero funzionare in diversi data center e anche se alcuni di essi si guastano, altri riprenderanno il gioco.

Kubernetes è molto più di una tecnologia. È un modo per ragionare sull'esecuzione del software su un sistema distribuito.

Kubernetes senza Docker

Come puoi vedere da quanto sopra, K8 fa molto affidamento sui contenitori. Docker è solo una delle tante tecnologie di containerizzazione disponibili. Altri includono rkt di CoreOS, LXC di Canonical, Jails su FreeBSD e Zones in Illumos e SmartOS. Kubernetes potrebbe essere implementato su ognuna di queste tecnologie. In effetti, funziona abbastanza bene con rkt di CoreOS.

Tuttavia, a causa della popolarità di Docker, la comunità e le organizzazioni hanno fatto di tutto per garantire che Docker offrisse qualsiasi cosa e tutto ciò che le specifiche di Kubernetes gli richiedevano. È per questo motivo che anche progetti come Docker su macOS e PC sono certificati Kubernetes.

Docker senza Kubernetes

Il modo in cui Kubernetes ha uno dei migliori supporti durante l'utilizzo di Docker, Docker stesso fa molto affidamento su Kubernetes per distribuire container su larga scala. Docker dispone di un proprio sistema di gestione e orchestrazione dei container noto come Docker Swarm, che dovrebbe essere un'alternativa a Kubernetes.

Nonostante Docker Swarm sia una tecnologia nativa su Docker, Kubernetes è ciò che le persone chiedono e le attuali proiezioni di mercato sembrano indicare che K8 sta per conquistare la quota di mercato più grande. Docker deve il suo successo in gran parte alla sua simbiosi con Kubernetes.

TL;DR

Per farla breve, Docker è una tecnologia di containerizzazione pensata per essere eseguita su un singolo computer. Kubernetes è una tecnologia di gestione che gestisce un gran numero di container su numerosi nodi di calcolo.

Docker sembra essere una delle tecnologie più adatte per costruire il tuo stack K8 K. Inizi assicurandoti che la tua applicazione venga eseguita come un container docker, quindi K8 garantisce che questo container possa scalare in tutto il mondo, se la necessità di farlo si presenta in futuro.

Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...
Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...
Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...