Como um commiter do CloudFoundry (passado) e do Kubernetes (presente), provavelmente sou o único qualificado para responder a esta.
Tipo PaaS
Eu gosto de chamar CloudFoundry de "PaaS de aplicativo" e Kubernetes de "PaaS de contêiner", mas a distinção é bastante sutil e fluida, visto que ambos os projetos mudam com o tempo para competir nos mesmos mercados.
A distinção entre os dois é que o CF tem uma camada de teste que leva um aplicativo de usuário (de 12 fatores) (por exemplo, jar ou gem) e um buildpack de estilo Heroku (por exemplo, Java + Tomcat ou Ruby) e produz uma gota (análogo a um Imagem do Docker). CF não expõe a interface de containerização ao usuário, mas o Kubernetes sim.
Público
O público principal da CloudFoundry são os desenvolvedores de aplicativos corporativos que desejam implantar aplicativos sem estado de 12 fatores usando buildpacks no estilo Heroku.
O público do Kubernetes é um pouco mais amplo, incluindo aplicativos sem estado e desenvolvedores de serviços com estado que fornecem seus próprios contêineres.
Essa distinção pode mudar no futuro:
Comparação de recursos
À medida que os dois projetos amadurecem e competem, suas semelhanças e diferenças mudarão. Portanto, considere a seguinte comparação de recursos com um grão de sal.
Tanto CF quanto K8s compartilham muitos recursos semelhantes, como conteinerização, namespacing, autenticação,
Vantagens competitivas do Kubernetes:
- Agrupe e dimensione pods de contêineres que compartilham uma pilha de rede, em vez de apenas escalar independentemente
- Traga seu próprio recipiente
- Camada de persistência com estado
- Comunidade de OSS maior e mais ativa
- Arquitetura mais extensível com componentes substituíveis e plug-ins de terceiros
- GUI da web grátis
Vantagens competitivas da CloudFoundry:
- Autenticação madura, agrupamento de usuários e suporte a multilocação [x]
- Traga seu próprio aplicativo
- Balanceador de carga incluído
- Implantado, dimensionado e mantido ativo por BOSH [x]
- Registro robusto e agregação de métricas [x]
- GUI da web corporativa [x]
[x] Esses recursos não fazem parte do Diego nem estão incluídos no Lattice.
Desdobramento, desenvolvimento
Uma das vantagens competitivas da CloudFoundry é que ela possui um mecanismo de implantação maduro, BOSH, que permite recursos como dimensionamento, ressurreição e monitoramento de componentes principais do CF. O BOSH também oferece suporte a muitas camadas IaaS com uma abstração de provedor de nuvem conectável. Infelizmente, a curva de aprendizado e o gerenciamento de configuração de implantação do BOSH são um pesadelo. (Como um committer BOSH, acho que posso dizer isso com precisão.)
A abstração de implantação do Kubernetes ainda está em sua infância. Vários ambientes de destino estão disponíveis no repositório principal, mas nem todos estão funcionando, bem testados ou com suporte dos desenvolvedores principais. Isso é principalmente uma questão de maturidade. Pode-se esperar que isso melhore com o tempo e aumente a abstração. Por exemplo, o Kubernetes no DCOS permite implantar o Kubernetes em um cluster DCOS existente com um único comando.
Contexto histórico
Diego é uma versão reescrita do Droplet Execution Agent do CF. Ele foi originalmente desenvolvido antes do Kubernetes ser anunciado e assumiu mais escopo de recursos conforme o cenário competitivo evoluiu. Seu objetivo original era gerar droplets (aplicativo do usuário + buildpack CF) e executá-los em containers Warden (renomeado Garden quando reescrito em Go). Desde o seu início, também foi reempacotado como Lattice , que é uma espécie de CloudFoundry-lite (embora esse nome tenha sido usado por um projeto existente) Por essa razão, o Lattice é um tanto parecido com um brinquedo, pois reduziu deliberadamente a audiência e o escopo do usuário, faltando explicitamente os recursos que o tornariam "pronto para a empresa". Recursos que o CF já oferece. Em parte, isso ocorre porque o Lattice é usado para testar os componentes principais, sem parte da sobrecarga do CF mais complexo, mas você também pode usar o Lattice em ambientes internos de alta confiança onde a segurança e multilocação não são uma grande preocupação .
Também vale a pena mencionar que o CloudFoundry e o Warden (seu mecanismo de contêiner) também são anteriores ao Docker, alguns anos.
O Kubernetes, por outro lado, é um projeto relativamente novo desenvolvido pelo Google com base em anos de uso de contêineres com BORG e Omega. O Kubernetes pode ser considerado como orquestração de contêineres de 3ª geração no Google, da mesma forma que Diego é a orquestração de contêineres de 3ª geração na Pivotal / VMware (v1 escrita na VMware; v2 na VMware com ajuda do Pivotal Labs; v3 na Pivotal depois de assumir o projeto) .