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

Qual è esattamente la differenza tra Mesos di Apache e Kubernetes di Google? Capisco entrambi sono software di gestione del cluster di server. Qualcuno può elaborare dove sono le principali differenze – quando si preferirebbe quale struttura?

Perché vorresti usare Kubernetes sulla Mesosfera ?

Kubernetes è un progetto open source che porta le funzionalità di gestione dei cluster “stile Google” nel mondo delle macchine virtuali o degli scenari “sul metallo”. Funziona molto bene con i moderni ambienti dei sistemi operativi (come CoreOS o Red Hat Atomic) che offrono “nodes” di calcolo leggero che sono gestiti per te. È scritto in Golang ed è leggero, modulare, portatile ed estensibile. Noi (il team di Kubernetes) stiamo lavorando con diverse aziende tecnologiche (inclusa Mesosphere che curano il progetto open source Mesos) per stabilire Kubernetes come il modo standard per interagire con i cluster di elaborazione. L’idea è di riprodurre i pattern che vediamo persone che hanno bisogno di creare applicazioni cluster sulla base della nostra esperienza su Google. Alcuni di questi concetti includono:

  • pod : 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 i contenitori, e
  • servizi – una serie di contenitori che svolgono una funzione comune.

Quindi con Kubernetes avrai qualcosa di semplice, facile da usare, portatile ed estensibile che aggiunge “cluster” come nome alle cose che gestisci nel modo più leggero ansible. Esegui un’applicazione su un cluster e smetti di preoccuparti di un singolo computer. In questo caso, il cluster è una risorsa flessibile come una VM. È un’unità di calcolo logico. Alzalo, usalo, ridimensionalo, abbassalo rapidamente e facilmente.

Con Mesos, vi è una buona dose di sovrapposizione in termini di visione di base, ma i prodotti sono in punti abbastanza diversi nel loro ciclo di vita e hanno diversi punti dolci. Mesos è un kernel di sistemi distribuiti che unisce un sacco di macchine diverse in un computer logico. È nato per un mondo in cui possiedi un sacco di risorse fisiche per creare un grande cluster di calcolo statico. La cosa grandiosa è che molte delle moderne applicazioni di elaborazione dati scalabili funzionano bene su Mesos (Hadoop, Kafka, Spark) ed è bello perché puoi eseguirle tutte nello stesso pool di risorse di base, insieme alle tue nuove app in package container di età . È 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 veramente 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 maggiori funzionalità per l’app Kubernetes (master ad alta disponibilità, semantica di programmazione più avanzata, possibilità di scalare fino a un numero molto elevato di nodes) se necessario, ed è adatto per l’esecuzione di carichi di lavoro di produzione (Kubernetes è ancora in uno stato alfa).

Alla domanda, tendo a dire:

  1. Kubernetes è un ottimo punto di partenza se sei nuovo nel mondo del clustering; è il modo più veloce, più semplice e leggero per dare un calcio agli pneumatici e iniziare a sperimentare lo sviluppo orientato ai cluster. Offre un livello molto alto 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 suddividere i carichi di lavoro tra loro e di mescolare alcune delle novità, incluse le app di Kubernetes.

  3. Mesos ti dà una valvola di sfogo se hai bisogno di funzionalità che non sono ancora state implementate dalla comunità nel framework di Kubernetes.

Entrambi i progetti mirano a semplificare l’implementazione e la gestione delle applicazioni all’interno dei container nel tuo datacenter o nel cloud.

Per distribuire le applicazioni su Mesos, è ansible utilizzare Marathon o Kubernetes per Mesos.

Marathon è un sistema di controllo e init per tutto il cluster per l’esecuzione di servizi Linux in cgroup e container Docker. La maratona ha un certo numero di diverse funzionalità di distribuzione canarie ed è un progetto molto maturo.

La maratona funziona su Mesos, che è un gestore di risorse altamente scalabile, testato e flessibile. La maratona ha dimostrato di scalare e gestire molti ambienti di produzione.

Lo stack tecnologico Mesos e Mesosphere fornisce un ambiente simile a un 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 diretta contro il datacenter. Estrae l’hardware sottostante (es. Bare metal o VM) e espone le risorse. Contiene primitive per scrivere applicazioni distribuite (ad esempio, Spark era in origine un’app di Mesos, Chronos, ecc.) Come Message Passing, Task Execution, ecc. Così, sono state rese possibili applicazioni completamente nuove. Apache Spark è un esempio di un nuovo framework (in gergo Mesos chiamato) costruito originariamente per Mesos. Ciò ha permesso uno sviluppo davvero veloce: gli sviluppatori di Spark non dovevano preoccuparsi del networking per distribuire le attività tra i nodes poiché questo è un nucleo primitivo in Mesos.

A mia conoscenza, Kubernetes non è attualmente utilizzato all’interno di Google nelle distribuzioni di produzione. Per la produzione, Google utilizza Omega / Borg, che è molto più simile al modello Mesos / Marathon. Tuttavia, l’aspetto positivo dell’utilizzo di Mesos come base è che sia Kubernetes che Marathon possono eseguirne il controllo.

Altre risorse su Marathon:

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

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

Kubernetes e Mesos sono una partita fatta in paradiso. Kubernetes abilita l’astrazione del Pod (gruppo di contenitori collocati), insieme alle etichette Pod per l’individuazione dei servizi, il bilanciamento del carico e il controllo della replica. Mesos fornisce le allocazioni di risorse a grana fine per i pod attraverso i nodes in un cluster e può far sì che Kubernetes funzioni bene con altri framework in esecuzione sulle stesse risorse cluster.

dal readme di kubernetes-mesos

Mesos e Kubernetes possono essere utilizzati entrambi per gestire un cluster di macchine e astrarre l’hardware.

Mesos, in base alla progettazione, non fornisce un programma di pianificazione (per decidere dove e quando eseguire i processi e cosa fare se il processo non riesce), è ansible utilizzare qualcosa come Marathon o Chronos, o scrivere il proprio.

Kubernetes eseguirà la pianificazione per te immediatamente e potrà essere utilizzato come pianificatore per Mesos (correggimi se ho torto qui!), Che è dove puoi usarli insieme. Mesos può avere più scheduler che condividono lo stesso cluster, quindi in teoria è ansible eseguire insieme kubernetes e chronos sullo stesso hardware.

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

Mi piace questo breve video qui materiale di apprendimento del mesos

con i cluster di metallo nudo, avresti bisogno di generare stack come HDFS, SPARK, MR ecc … quindi se avvii attività relative a questi utilizzando solo la gestione dei cluster bare metal, ci sarà un avvio molto freddo.

con mesos, è ansible installare questi servizi in cima ai metalli nudi ed è ansible evitare i tempi di recupero di tali servizi di base. Questo è qualcosa che il mesos fa bene. e può essere utilizzato da Kubernetes che lo costruisce su di esso.