Qual é a diferença entre o Mesos do Apache e o Kubernetes do Google

385

Qual é exatamente a diferença entre o Mesos do Apache e o Kubernetes do Google? Entendo que ambos são software de gerenciamento de cluster de servidor. Alguém pode elaborar onde estão as principais diferenças - quando seria preferível qual estrutura?

Por que você gostaria de usar o Kubernetes no topo da Mesosfera ?

binaryanomaly
fonte

Respostas:

516

O Kubernetes é um projeto de código aberto que traz recursos de gerenciamento de cluster 'estilo Google' para o mundo das máquinas virtuais ou cenários 'on the metal'. Funciona muito bem com ambientes modernos de sistema operacional (como CoreOS ou Red Hat Atomic) que oferecem 'nós' leves de computação gerenciados por você. Está escrito em Golang e é leve, modular, portátil e extensível. Nós (a equipe do Kubernetes) estamos trabalhando com várias empresas de tecnologia diferentes (incluindo a Mesosfera que administra o projeto de código aberto Mesos) para estabelecer o Kubernetes como a maneira padrão de interagir com clusters de computação. A idéia é reproduzir os padrões que vemos pessoas precisando criar aplicativos de cluster com base em nossa experiência no Google. Alguns desses conceitos incluem:

  • pods - uma maneira de agrupar contêineres
  • controladores de replicação - uma maneira de lidar com o ciclo de vida dos contêineres
  • rótulos - uma maneira de encontrar e consultar contêineres e
  • serviços - um conjunto de contêineres executando uma função comum.

Portanto, somente com o Kubernetes, você terá algo simples, fácil de instalar, portátil e extensível que adiciona 'cluster' como um substantivo às coisas que você gerencia da maneira mais leve possível. Execute um aplicativo em um cluster e pare de se preocupar com uma máquina individual. Nesse caso, o cluster é um recurso flexível, como uma VM. É uma unidade de computação lógica. Aumente, use, redimensione, diminua de forma rápida e fácil.

Com o Mesos, há uma justa quantidade de sobreposições em termos da visão básica, mas os produtos estão em pontos bastante diferentes em seu ciclo de vida e têm diferentes pontos positivos. O Mesos é um kernel de sistemas distribuídos que reúne várias máquinas diferentes em um computador lógico. Nasceu para um mundo em que você possui muitos recursos físicos para criar um grande cluster de computação estática. O melhor de tudo é que muitos aplicativos modernos de processamento de dados escalonáveis ​​funcionam bem no Mesos (Hadoop, Kafka, Spark) e é bom porque você pode executá-los todos no mesmo pool de recursos básicos, juntamente com os aplicativos empacotados em contêiner da nova era . É um pouco mais pesado que o projeto Kubernetes, mas está ficando cada vez mais fácil de gerenciar, graças ao trabalho de pessoas como a Mesosfera.

Agora, o que é realmente interessante é que o Mesos está sendo adaptado para adicionar muitos conceitos do Kubernetes e dar suporte à API do Kubernetes. Portanto, será um gateway para obter mais recursos para o seu aplicativo Kubernetes (mestre de alta disponibilidade, semântica de agendamento mais avançada, capacidade de dimensionar para um número muito grande de nós) se você precisar deles, e é adequado para executar cargas de trabalho de produção (Kubernetes ainda está no estado alfa).

Quando perguntado, costumo dizer:

  1. O Kubernetes é um ótimo lugar para começar se você é novo no mundo dos clustering; é a maneira mais rápida, fácil e leve de chutar os pneus e começar a experimentar o desenvolvimento orientado a cluster. Oferece um nível muito alto de portabilidade, já que é suportado por vários fornecedores diferentes (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, etc.).

  2. Se você possui cargas de trabalho existentes (Hadoop, Spark, Kafka, etc.), o Mesos fornece uma estrutura que permite intercalar essas cargas de trabalho entre si e misturar algumas das novidades, incluindo os aplicativos Kubernetes.

  3. O Mesos fornece uma válvula de escape se você precisar de recursos que ainda não foram implementados pela comunidade na estrutura do Kubernetes.

Craig Mcluckie
fonte
4
Ótima visão geral. Dois breves pensamentos: 1) Eu acredito que o Kubernetes agora é beta e não alfa? 2) Adicione informações sobre a Maratona?
Knite
57
Resumindo (para uma leitura rápida - espero que esteja certo): o kubernetes é um gerenciador de cluster para contêineres (apenas?), Enquanto o mesos é um kernel de sistema distribuído que fará com que o cluster pareça um sistema de computador gigante para todas as estruturas suportadas e aplicativos criados para serem executados em mesos. No entanto, o kubernetes é uma estrutura (entre outras) que pode ser executada em mesos. Assim, combinando você acaba com um cluster que não é um cluster e um gerenciador de cluster que não possui um cluster para gerenciar. Grande mundo novo :-) (J / K, há uma série de benefícios que você começa a partir desta desde kub é mais do que CLST phys res....)
masi
7
Aqui está a Mesosfera falando exatamente sobre isso no evento de lançamento do Kubernetes 1.0: youtube.com/… - aviso: sou eu.
Air
68

Ambos os projetos visam facilitar a implantação e o gerenciamento de aplicativos dentro de contêineres no datacenter ou na nuvem.

Para implantar aplicativos no topo do Mesos, é possível usar o Marathon ou o Kubernetes para o Mesos.

Marathon é um sistema de inicialização e controle em todo o cluster para executar serviços Linux em cgroups e contêineres Docker. Marathon possui vários recursos de implantação de canários diferentes e é um projeto muito maduro.

A maratona corre em cima do Mesos, que é um gerenciador de recursos altamente escalável, testado em batalha e flexível. A maratona é comprovada em escala e é executada em muitos ambientes de produção.

A pilha de tecnologias Mesos e Mesosphere fornece um ambiente semelhante à nuvem para executar cargas de trabalho Linux existentes, mas também fornece um ambiente nativo para a construção de novos sistemas distribuídos.

Mesos é um kernel de sistemas distribuídos, com uma API completa para programação diretamente no datacenter. Ele abstrai o hardware subjacente (por exemplo, bare metal ou VMs) e expõe apenas os recursos. Ele contém primitivas para escrever aplicativos distribuídos (por exemplo, o Spark era originalmente um aplicativo Mesos, Chronos etc.), como Passagem de mensagens, execução de tarefas, etc. Portanto, aplicativos totalmente novos são possíveis. O Apache Spark é um exemplo de uma nova estrutura (no jargão do Mesos chamada) que foi criada originalmente para o Mesos. Isso permitiu um desenvolvimento realmente rápido - os desenvolvedores do Spark não precisaram se preocupar com a rede para distribuir tarefas entre os nós, pois esse é um primitivo essencial no Mesos.

Que eu saiba, o Kubernetes não é usado dentro do Google em implantações de produção hoje. Para produção, o Google usa Omega / Borg, muito mais parecido com o modelo Mesos / Marathon. No entanto, o melhor de usar o Mesos como base é que tanto o Kubernetes quanto o Marathon podem rodar em cima dele.

Mais recursos sobre Marathon:

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

Vídeo: https://www.youtube.com/watch?v=hZNGST2vIds

mesosférico
fonte
37

Kubernetes e Mesos são uma combinação feita no céu. O Kubernetes permite a abstração do Pod (grupo de contêineres co-localizados), juntamente com os rótulos do Pod para descoberta de serviço, balanceamento de carga e controle de replicação. O Mesos fornece alocações refinadas de recursos para pods nos nós de um cluster e pode fazer com que o Kubernetes funcione bem com outras estruturas em execução nos mesmos recursos de cluster.

do leia - me de kubernetes-mesos

Herodot
fonte
18

Mesos e Kubernetes podem ser usados ​​para gerenciar um cluster de máquinas e abstrair o hardware.

O Mesos, por design, não fornece um agendador (para decidir onde e quando executar processos e o que fazer se o processo falhar), você pode usar algo como Marathon ou Chronos ou escrever seu próprio.

O Kubernetes fará o agendamento para você imediatamente, e pode ser usado como um agendador para o Mesos (por favor, me corrija se eu estiver errado aqui!), Que é onde você pode usá-los juntos. O Mesos pode ter vários agendadores compartilhando o mesmo cluster, portanto, em teoria, você pode executar kubernetes e chronos juntos no mesmo hardware.

Super simplista: se você deseja controlar como os seus contêineres estão agendados, vá para o Mesos, caso contrário o Kubernetes é ótimo.

user2851943
fonte
11
Esta resposta é imprecisa e confusa. Não há uma maneira fácil de executar o Mesos no Kubernetes - e, de fato, isso seria uma inversão da arquitetura. Como o Kubernetes tem um foco menos geral do que o Mesos, faz mais sentido executá-lo em cima do Mesos.
S250
11
Sim, eu quis dizer o kubernetes sendo executado em cima do Mesos. O Kubernetes fornece a lógica de agendamento para a estrutura do mesos e o mesos cuida do trabalho em execução etc. Desculpe, se isso não estava claro.
user2851943
2
@air Estou interessado em saber como você definiria o agendador aqui? O próprio Mesos não parece fornecer nenhuma lógica de agendamento? Tudo isso é tratado em Chronos / Marathon / etc? (talvez eu perdi alguma coisa :)!)
user2851943
6
Acho que vejo o que você está vendo - o Mesos é uma estrutura que permite que os agendadores sejam conectados. Fiquei confuso com o texto sugerindo que o Mesos omitiu algo importante ("O Mesos não fornece"), quando é por Projeto. Eu removi meu voto negativo.
Air
5
Esta resposta é precisa. O Mesos se concentra no gerenciamento de recursos e desacopla o agendamento, permitindo estruturas conectáveis. Um bom exemplo é o Netflix fez escrevendo um quadro de programação: Fenzo techblog.netflix.com/2015/08/...
Camilo Crespo
5

Eu gosto deste pequeno vídeo aqui mesos material de aprendizagem

com clusters bare metal, você precisaria gerar pilhas como HDFS, SPARK, MR etc ... portanto, se você iniciar tarefas relacionadas a eles usando apenas o gerenciamento de cluster bare metal, haverá muito tempo de partida frio.

Com o mesos, você pode instalar esses serviços sobre os metais simples e evitar o tempo de espera desses serviços básicos. Isso é algo que o mesos faz bem. e pode ser utilizado pelo kubernetes construindo em cima dele.

zinking
fonte
3

"Entendo que ambos são softwares de gerenciamento de cluster de servidores".

Esta afirmação não é totalmente verdadeira. O Kubernetes não gerencia clusters de servidores, orquestra contêineres para que trabalhem em conjunto com o mínimo de problemas e exposição. O Kubernetes permite definir partes do seu aplicativo como "pods" (um ou mais contêineres) entregues por "implantações" ou "conjuntos de daemon" (e alguns outros) e expostos ao mundo externo por meio de serviços. No entanto, o Kubernetes não gerencia o próprio cluster (existem ferramentas que podem provisionar, configurar e dimensionar clusters para você, mas elas não fazem parte do próprio Kubernetes).

Mesos, por outro lado, se aproxima do "gerenciamento de cluster", pois ele pode controlar o que está sendo executado onde, mas não apenas em termos de agendamento de contêineres. Mesos também gerencia software independente em execução nos servidores de cluster. Embora seja usado principalmente como uma alternativa ao Kubernetes, o Mesos pode trabalhar facilmente com o Kubernetes, enquanto a funcionalidade se sobrepõe em muitas áreas, mas o Mesos pode fazer mais (mas nas partes sobrepostas o Kubernetes tende a ser melhor).

Andrei Dascalu
fonte