Qual è la differenza tra Mesos di Apache e Kubernetes di Google


385

Qual è esattamente la differenza tra Mesos di Apache e Kubernetes di Google? Comprendo che entrambi sono software di gestione dei cluster di server. Qualcuno può spiegare dove sono le principali differenze - quando scegliere quale quadro sarebbe preferito?

Perché dovresti voler usare Kubernetes su Mesosphere ?

Risposte:


516

Kubernetes è un progetto open source che offre funzionalità di gestione dei cluster "Google style" al mondo delle macchine virtuali o scenari "on the metal". Funziona molto bene con i moderni ambienti del sistema operativo (come CoreOS o Red Hat Atomic) che offrono "nodi" di elaborazione leggeri gestiti per te. È scritto in Golang ed è leggero, modulare, portatile ed estensibile. Noi (il team di Kubernetes) stiamo lavorando con diverse società tecnologiche (tra cui Mesosphere che curano il progetto open source Mesos) per stabilire Kubernetes come il modo standard di interagire con i cluster di elaborazione. L'idea è di riprodurre gli schemi di cui le persone hanno bisogno per creare applicazioni cluster basate sulla nostra esperienza con Google. Alcuni di questi concetti includono:

  • baccelli : un modo per raggruppare i contenitori
  • controller di replica : un modo per gestire il ciclo di vita dei contenitori
  • etichette - un modo per trovare e interrogare contenitori e
  • servizi - un insieme di contenitori che svolgono una funzione comune.

Quindi solo con Kubernetes avrai qualcosa di semplice, facile da mettere in moto, portatile ed estensibile che aggiunge "cluster" come un nome alle cose che gestisci nel modo più leggero possibile. Esegui un'applicazione su un cluster e smetti di preoccuparti di un singolo computer. In questo caso, il cluster è una risorsa flessibile proprio come una VM. È un'unità di calcolo logica. Alzalo, usalo, ridimensionalo, abbassalo rapidamente e facilmente.

Con Mesos, vi è una buona quantità di sovrapposizioni in termini di visione di base, ma i prodotti si trovano in punti abbastanza diversi nel loro ciclo di vita e hanno diversi punti deboli. Mesos è un kernel di sistemi distribuiti che unisce molte macchine diverse in un computer logico. È nato per un mondo in cui possiedi molte risorse fisiche per creare un grande cluster di elaborazione statica. La cosa grandiosa è che molte moderne applicazioni di elaborazione dati scalabili funzionano bene su Mesos (Hadoop, Kafka, Spark) ed è bello perché puoi eseguirle tutte sullo stesso pool di risorse di base, insieme alle tue app pacchettizzate container di nuova era . È un po 'più pesante del progetto Kubernetes, ma sta diventando sempre più facile da gestire grazie al lavoro di persone come Mesosphere.

Ora ciò che diventa davvero interessante è che Mesos è attualmente in fase di adattamento per aggiungere molti concetti di Kubernetes e supportare l'API di Kubernetes. Quindi sarà un gateway per ottenere più funzionalità per la tua app Kubernetes (master ad alta disponibilità, semantica di pianificazione più avanzata, capacità di scalare su un numero molto elevato di nodi) se ne hai bisogno ed è adatta per eseguire carichi di lavoro di produzione (Kubernetes è ancora in uno stato alfa).

Quando viene chiesto, tendo a dire:

  1. Kubernetes è un ottimo punto di partenza se sei nuovo nel mondo del clustering; è il modo più rapido, semplice e leggero per calciare le gomme e iniziare a sperimentare lo sviluppo orientato al cluster. Offre un livello molto elevato di portabilità poiché è supportato da molti provider diversi (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, ecc.).

  2. Se disponi di carichi di lavoro esistenti (Hadoop, Spark, Kafka, ecc.), Mesos ti offre un framework che ti consente di intercalare quei carichi di lavoro tra loro e di mescolare alcuni dei nuovi elementi tra cui le app Kubernetes.

  3. Mesos ti offre una valvola di fuga se hai bisogno di capacità che non sono ancora implementate dalla community nel framework Kubernetes.


4
Ottima panoramica. Due brevi pensieri: 1) Credo che Kubernetes sia ora beta anziché alfa? 2) Aggiungere informazioni sulla maratona?
Knite

57
Per riassumere (per la lettura rapida - spero di aver capito bene): kubernetes è un gestore di cluster per contenitori (solo?) Mentre mesos è un kernel di sistema distribuito che farà apparire il tuo cluster come un gigantesco sistema informatico per tutti i framework supportati e app create per essere eseguite su mesos. Tuttavia kubernetes è uno (tra gli altri) framework che può essere eseguito su mesos. Pertanto, combinando entrambi si finisce con un cluster che non è un cluster e un gestore cluster che non ha cluster da gestire. Grande nuovo mondo :-) (J / K ci sono molti benefici da questo dato che Kub. È più di una ricerca fisica.)
Masi

7
Ecco Mesosphere che parla esattamente di questo all'evento di lancio di Kubernetes 1.0: youtube.com/… - disclaimer: sono io.
Air

68

Entrambi i progetti mirano a semplificare la distribuzione e la gestione di applicazioni all'interno di container nel data center o nel cloud.

Per distribuire applicazioni su Mesos, si può usare Marathon o Kubernetes per Mesos.

Marathon è un sistema di init e controllo a livello di cluster per l'esecuzione di servizi Linux in cgroup e container Docker. La maratona ha una serie di diverse funzioni di schieramento canarino ed è un progetto molto maturo.

Marathon corre su Mesos, che è un gestore di risorse altamente scalabile, testato in battaglia e flessibile. Marathon ha dimostrato di essere scalabile e funziona in molti ambienti di produzione.

Lo stack tecnologico Mesos e Mesosphere fornisce un ambiente simile a cloud per l'esecuzione di carichi di lavoro Linux esistenti, ma fornisce anche un ambiente nativo per la creazione di nuovi sistemi distribuiti.

Mesos è un kernel di sistemi distribuiti, con un'API completa per la programmazione direttamente contro il datacenter. Estrae l'hardware sottostante (ad esempio bare metal o VM) e espone semplicemente le risorse. Contiene primitive per la scrittura di applicazioni distribuite (ad esempio Spark era originariamente un'app Mesos, Chronos, ecc.) Come Passaggi messaggi, Esecuzione attività, ecc. Pertanto, sono rese possibili applicazioni completamente nuove. Apache Spark è un esempio di un nuovo framework (chiamato gergo di Mesos) che è stato creato originariamente per Mesos. Ciò ha consentito uno sviluppo molto rapido: gli sviluppatori di Spark non dovevano preoccuparsi della rete per distribuire le attività tra i nodi poiché questa è una primitiva di base in Mesos.

Per quanto ne so, Kubernetes non viene utilizzato oggi all'interno di Google nelle distribuzioni di produzione. Per la produzione, Google utilizza Omega / Borg, che è molto più simile al modello Mesos / Marathon. Tuttavia, la cosa grandiosa di usare Mesos come base è che sia Kubernetes che Marathon possono farcela.

Altre risorse su Marathon:

https://mesosphere.github.io/marathon/

Video: https://www.youtube.com/watch?v=hZNGST2vIds


37

Kubernetes e Mesos sono una partita fatta in paradiso. Kubernetes abilita l'astrazione Pod (gruppo di contenitori posizionati congiuntamente), insieme alle etichette Pod per l'individuazione del servizio, il bilanciamento del carico e il controllo della replica. Mesos fornisce le allocazioni delle risorse a grana fine per i pod attraverso i nodi in un cluster e può far funzionare Kubernetes con altri framework in esecuzione sulle stesse risorse del cluster.

dal readme di kubernetes-mesos


18

Mesos e Kubernetes possono entrambi essere usati per gestire un gruppo di macchine e sottrarre l'hardware.

Mesos, di progettazione, non ti fornisce uno scheduler (per decidere dove e quando eseguire i processi e cosa fare se il processo fallisce), puoi usare qualcosa come Marathon o Chronos o scrivere il tuo.

Kubernetes farà la programmazione per te e può essere utilizzata come programmatore per Mesos (per favore correggimi se sbaglio qui!) Che è dove puoi usarli insieme. Mesos può avere più programmatori che condividono lo stesso cluster, quindi in teoria potresti eseguire kubernetes e chronos insieme sullo stesso hardware.

Super semplicisticamente: se vuoi avere il controllo su come sono programmati i tuoi contenitori, scegli Mesos, altrimenti le rocce di Kubernetes.


1
Questa risposta è inaccurata e confusa. Non esiste un modo semplice per eseguire Mesos su Kubernetes - e in effetti sarebbe un'inversione di architettura. Dal momento che Kubernetes ha una messa a fuoco meno generale di Mesos, ha più senso eseguirlo su Mesos.
ssk2,

1
Sì, intendevo kubernetes in esecuzione su Mesos .. Kubernetes fornisce la logica di pianificazione per il framework mesos e mesos si occupa del lavoro in esecuzione, ecc. Mi dispiace se non fosse chiaro.
user2851943,

2
@air Sono interessato a sapere come definiresti lo scheduler qui? Mesos stesso non sembra fornire alcuna logica di pianificazione? Tutto questo è gestito in Chronos / Marathon / etc? (forse mi sono perso qualcosa! :))
user2851943,

6
Penso di vedere cosa stai ottenendo - Mesos è un framework che consente agli scheduler di essere collegati. Ero confuso dalle parole che suggeriscono che Mesos ha omesso qualcosa di importante ("Mesos non ti fornisce"), quando è design. Ho rimosso il mio voto negativo.
Air

5
Questa risposta è accurata Mesos si concentra sulla gestione delle risorse e disaccoppia la pianificazione consentendo quadri collegabili. Un buon esempio è quello che ha fatto Netflix scrivendo un framework di programmazione: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo

5

Mi piace questo breve video qui mesos materiale didattico

con i cluster bare metal, dovresti generare stack come HDFS, SPARK, MR ecc ... quindi se avvii attività correlate a questi utilizzando solo la gestione dei cluster bare metal, ci sarà molto tempo di avvio a freddo.

con mesos, puoi installare questi servizi sopra i metalli nudi e puoi evitare i tempi di attivazione di tali servizi di base. Questo è qualcosa che mesos fa bene. e può essere utilizzato da kubernetes costruendoci sopra.


3

"Comprendo che entrambi sono software di gestione dei cluster di server."

Questa affermazione non è del tutto vera. Kubernetes non gestisce i cluster di server, orchestra i contenitori in modo tale che collaborino con problemi ed esposizione minimi. Kubernetes ti consente di definire parti della tua applicazione come "pod" (uno o più contenitori) che vengono consegnati da "distribuzioni" o "set di demoni" (e pochi altri) ed esposti al mondo esterno tramite servizi. Tuttavia, Kubernetes non gestisce il cluster stesso (esistono strumenti in grado di eseguire il provisioning, la configurazione e il ridimensionamento dei cluster per l'utente, ma questi non fanno parte di Kubernetes).

Mesos, d'altra parte, si avvicina alla "gestione dei cluster" in quanto può controllare ciò che è in esecuzione dove, ma non solo in termini di pianificazione dei contenitori. Mesos gestisce anche software standalone in esecuzione sui server del cluster. Anche se viene utilizzato principalmente come alternativa a Kubernetes, Mesos può facilmente funzionare con Kubernetes poiché mentre la funzionalità si sovrappone in molte aree, Mesos può fare di più (ma sulle parti sovrapposte Kubernetes tende a essere migliore).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.