Hoje conhecemos o Kubernetes e o Docker e descobrimos qual tecnologia é melhor usar em cada caso específico e vale a pena usar os dois ao mesmo tempo? Freqüentemente, os desenvolvedores (especialmente iniciantes) se deparam com a necessidade de escolher um aplicativo para contêiner - Kubernetes ou Docker. Vamos descobrir para que propósito cada uma dessas tecnologias é mais adequada.
Para fazer isso, vamos primeiro definir o termo "contêiner" no contexto de Kubernetes (K8) e Docker. Isso permitirá que você entenda os fundamentos de ambas as tecnologias antes de mergulharmos em cada uma delas.
O que é um container
Digamos que você queira instalar um aplicativo em um ambiente ideal para obter o máximo desempenho. Normalmente, os parâmetros de tal ambiente dependem dos racks de servidores, variáveis de rede e outras características técnicas da infraestrutura externa. Isso significa que 100% do tempo, você não alcançará o desempenho máximo ... a menos que crie um contêiner para abstrair o aplicativo de seu local físico.
Imagine uma sandbox ou máquina virtual com variáveis especificadas (tipo de sistema operacional, computação, etc.). Digamos que você também precise instalar outro aplicativo, um contêiner, no mesmo hardware, mas com um sistema operacional diferente e variáveis diferentes, e isso cria um ambiente isolado ideal para testar e implantar este aplicativo.
Esses aplicativos em contêineres funcionam como se estivessem em computadores diferentes e até mesmo em locais diferentes. A principal vantagem de usar contêineres é que podemos replicar seus ambientes para qualquer dispositivo, eliminando assim os problemas de inconsistência que existiam na era pré-contêiner de desenvolvimento de software.
O que é Kubernetes?
Kubernetes é uma ferramenta desenvolvida pelo Google em 2014 para orquestrar tarefas relacionadas a contêineres e plataformas de conteinerização. É um sistema de código aberto que pode gerenciar vários contêineres, expandindo seus recursos (veja os recursos abaixo) para manter os aplicativos “contêineres” funcionando sem problemas e disponíveis.
Principais recursos do Kubernetes
Alguns dos recursos do Kubernetes são:
- Manter um ambiente bem definido para desenvolvimento, teste e implantação
- Infraestrutura previsível e escalonável automaticamente (horizontalmente)
- Ambiente com balanceamento de carga de autocorreção (cancelável)
- Oportunidades amplas para instalar aplicativos
- Ferramentas de gerenciamento em nível de aplicativo
Essas são as cinco características principais para as quais os desenvolvedores criaram o Google Kubernetes Engine .
O que é Docker?
Docker é uma ferramenta de conteinerização desenvolvida em 2013. O Docker também é um software de código aberto e tecnologia de poucos recursos, permitindo que os desenvolvedores automatizem a instalação de aplicativos em contêineres portáteis.
Principais recursos do Docker
Aqui está uma pequena lista de recursos do Docker:
- Compartilhando imagens de ambiente com Docker Build
- Docker Assemble para reconhecimento de linguagem e fala ao criar contêineres
- Ferramentas nativas e baseadas na nuvem para otimizar a produtividade do desenvolvedor
- Ferramentas CI / CD para equipes que trabalham no desenvolvimento de aplicativos de controle de versão
- Alta resiliência com suporte robusto para grandes clusters
Docker ou Kubernetes. Eu tenho que escolher entre eles?
Nem sempre.
O próprio Kubernetes não pode iniciar um contêiner quando você inicia seu projeto. É melhor usar o Docker (ou sua alternativa) para isso. Mas recomendamos usá-los em sinergia.
O Docker cria e gerencia contêineres ... e o Kubernetes gerencia o Docker.
Caso seu aplicativo seja simples, o Docker também pode fornecer toda a infraestrutura necessária para mantê-lo funcionando. Conforme seu aplicativo cresce, quando pode precisar de vários clusters e manutenção mais complexa, você precisa usar o Kubernetes.
Você só terá uma escolha quando seu aplicativo for escalonado.
Prós e contras do Docker: conteinerização
Os desenvolvedores não gostariam de colocar aplicativos em contêineres se não houvesse benefícios associados a essa tecnologia. Vamos dar uma olhada em algumas das vantagens óbvias que tornam o Docker uma solução ideal, bem como algumas de suas desvantagens.
Prós:
- Facilidade de criação. A inicialização de contêineres no Docker é rápida e requer habilidades técnicas mínimas.
- Ferramentas do Docker. Gerenciar contêineres é fácil com um conjunto completo de ferramentas iniciais
- Suporte eficaz. Docker tem uma comunidade ativa de desenvolvedores que fornecem suporte técnico e ajudam a solucionar quaisquer problemas que você possa encontrar.
Desvantagens:
- . . , .
- . Docker - , . .
- . Docker , , .
Kubernetes:
Como o Docker, o Kubernetes tem vantagens e desvantagens que os desenvolvedores devem considerar ao usá-lo. Vamos dar uma olhada em alguns prós e contras para uma compreensão mais profunda do uso do K8.
Prós:
- Módulos de pod (pods). O K8 oferece suporte a pods (contêineres e ferramentas de conteinerização) para salvar com recuperação automática (recriação) em caso de falha inesperada.
- Desenvolvido pelo Google. O Kubernetes inspira confiança (nem todos, é claro) em sua qualidade devido à popularidade do desenvolvedor e à crescente (maior) comunidade.
- Disponibilidade de armazenamento padrão. Para conveniência do desenvolvedor, o K8 vem com armazenamento em nuvem e armazenamento SAN.
Desvantagens:
- Instalação complexa. Requer um esforço técnico significativo e leva muito tempo para instalar e configurar corretamente.
- "Exagero" - aplicativos simples não precisam da complexidade do Kubernetes. Mas qual de seus desenvolvedores admite que seu aplicativo é “simples”?
- As capacidades técnicas do K8 não são baratas. Os serviços de desenvolvedor DevOps são caros para criar e manter ferramentas Kubernetes.
Apesar dessas deficiências, o K8 é uma tecnologia promissora para a qual vale a pena atualizar. A experiência mostra que criar aplicativos do zero de acordo com seus padrões reduz significativamente os custos e a complexidade.
Exemplos de uso de Docker e Kubernetes
Embora esta postagem se concentre no Docker e no Kubernetes isoladamente, deve-se admitir que eles não existem isoladamente. Outras ferramentas concorrentes de orquestração e conteinerização estão reivindicando sucesso.
No entanto, para algumas situações, K8 e Docker são ideais. Em alguns casos, não há necessidade de usar as duas tecnologias juntas. Vamos considerá-los a seguir.
Quando usar o Kubernetes
Se a escala de seu aplicativo cresceu significativamente, pode ser hora de você atualizar para K8:
- Tempo de atividade quase perfeito. O recurso de autocorreção do Kubernetes permite que aplicativos com uso intensivo de recursos continuem funcionando, independentemente do número de falhas do sistema.
- Ao escolher entre diferentes prestadores de serviços de contentorização. Como o K8 coopera (em vários níveis de dificuldade) com quase todos os fornecedores, o uso do K8 como sistema de orquestração dá liberdade de escolha. Nenhum fornecedor pode se qualificar para um contrato com sua empresa se você não estiver satisfeito com a qualidade dos serviços após o período de teste.
- Se você não tiver certeza do potencial de valorização. Durante o dimensionamento horizontal, o K8 aloca recursos automaticamente para os aplicativos.
Quando usar o Docker
Em alguns casos, é melhor usar o Docker e suas ferramentas para hospedar aplicativos. Vamos dar uma olhada em alguns deles.
- 8 . , API Docker . Docker Swarm 8.
- . Docker - , . .
- CLI. Docker CLI, .
Quando usados juntos, o Kubernetes e o Docker se complementam. Primeiro, vale a pena observar a largura de banda lenta da qual reclamamos ao implementar Kubernetes e validar contêineres.
Quando você tem o orçamento e a capacidade técnica para oferecer suporte aos seus aplicativos, essas ferramentas funcionam muito bem. Você não terá tempo de inatividade do aplicativo com a ajuda da comunidade.
Também deve ser reconhecido que existem lacunas e deficiências em cada uma dessas ferramentas, para que funcionem melhor em conjunto. Kompose by K8 é uma adaptação do Docker Compose. Isso significa que o uso de ambas as ferramentas foi e continua sendo o padrão.
Assim, o resultado deste confronto é um empate amistoso. Os casos de uso dependem inteiramente de sua preferência. No entanto, é melhor não usar apenas o Kubernetes.