Kubernetes vs. Docker

Crie, entregue e dimensione aplicativos mais rapidamente com tecnologias de contêiner que funcionam melhor em conjunto.

A pergunta sobre Kubernetes versus Docker

A conversa sobre Kubernetes versus Docker geralmente é formulada como mutuamente exclusiva: devo usar o Kubernetes ou o Docker? É como comparar maçãs com torta de maçã. Achar que é preciso escolher uma ou outra opção é um equívoco comum.

A diferença entre o Kubernetes e o Docker é mais facilmente entendida quando respondida em uma pergunta sobre o uso simultâneo ou complementar. O fato é que você não precisa escolher: o Kubernetes e o Docker são tecnologias fundamentalmente diferentes que funcionam bem em conjunto para criar, fornecer e dimensionar aplicativos em contêiner.

Docker e o aumento da conteinerização

O Docker é uma tecnologia de software livre – e um formato de arquivo de contêiner – para automatizar a implantação de aplicativos como contêineres portáteis e autossuficientes que podem ser executados na nuvem ou localmente. A Docker, Inc., embora compartilhe um nome semelhante, é uma das empresas que cultiva a tecnologia Docker de software livre para ser executada em Linux e Windows em colaboração com provedores de nuvem como a Microsoft.

Embora a ideia de isolar ambientes não seja nova e existam outros tipos de software para conteinerização, o Docker tornou-se o formato padrão de contêiner nos últimos anos. O Docker oferece o Docker Engine, que é um ambiente de runtime. Ele permite que você crie e execute contêineres em qualquer computador de desenvolvimento; depois armazene ou compartilhe imagens de contêiner por meio de um registro de contêiner como o Docker Hub ou o Registro de Contêiner do Azure.

Conforme os aplicativos crescem para abranger vários contêineres implantados em vários servidores, operá-los torna-se mais complexo. Enquanto o Docker fornece um padrão aberto para empacotar e distribuir aplicativos em contêiner, as possíveis complexidades podem aumentar rapidamente. Como você coordena muitos contêineres e faz o agendamento deles? Como todos os diferentes contêineres do seu aplicativo se comunicam? Como você dimensiona muitas instâncias de contêiner? É aqui que o Kubernetes pode ajudar.

Kubernetes e orquestração de contêiner

O Kubernetes é um software de orquestração de software livre que fornece uma API para controlar como e onde esses contêineres serão executados. Ele permite que você execute os contêineres e cargas de trabalho do Docker e ajuda a resolver algumas das complexidades operacionais durante a transferência para escalar vários contêineres, implantados em diversos servidores.

O Kubernetes permite que você organize um cluster de máquinas virtuais e agende a execução de contêineres nessas máquinas virtuais com base nos recursos de computação disponíveis e nos requisitos de recursos de cada contêiner. Contêineres são agrupados em pods, a unidade de operações básica para o Kubernetes. Esses contêineres e pods poderão ser escalonados para seu estado desejado e você será capaz de gerenciar o ciclo de vida para manter os aplicativos em pleno funcionamento.

Qual é a diferença entre o Kubernetes e o Docker?

Embora seja comum comparar o Kubernetes com o Docker, é mais adequado comparar o Kubernetes ao Docker Swarm. O Docker Swarm é a tecnologia de orquestração do Docker que se concentra no clustering para contêineres do Docker – totalmente integrado ao ecossistema do Docker e usando sua própria API.

Uma diferença fundamental entre o Kubernetes e o Docker é que o Kubernetes deve ser executado em um cluster, enquanto o Docker é executado em um único nó. O Kubernetes é mais extenso que o Docker Swarm e deve coordenar clusters de nós em escala e em produção, de maneira eficiente. Os pods do Kubernetes – unidades de agendamento que podem conter um ou mais contêineres no ecossistema Kubernetes – são distribuídos entre os nós para fornecer alta disponibilidade.

Kubernetes e Docker – mais poderosos em conjunto

Embora a promessa dos contêineres seja codificar uma vez e executar em qualquer lugar, o Kubernetes oferece o potencial de orquestrar e gerenciar todos os recursos de contêiner através de um único painel de controle. Ele ajuda na rede, no balanceamento de carga, na segurança e no dimensionamento em todos os nós do Kubernetes que executam os contêineres. O Kubernetes também tem um mecanismo de isolamento interno, como os namespaces, que permitem agrupar recursos de contêiner por permissão de acesso, ambientes de preparo e muito mais. Esses constructos facilitam para a TI fornecer aos desenvolvedores o acesso a recursos de autoatendimento e colaborar até mesmo na arquitetura de microsserviços mais complexa, sem necessidade de representar todo o aplicativo no ambiente de desenvolvimento. A combinação de práticas de DevOps com contêineres e Kubernetes também permite uma linha de base da arquitetura de microsserviços que promove entrega rápida e orquestração escalonável de aplicativos nativos de nuvem.

Em resumo, use o Kubernetes com o Docker para:

  • Tornar a infraestrutura mais robusta e o aplicativo mais disponível. Seu aplicativo permanecerá online, mesmo que alguns dos nós fiquem offline.
  • Tornar o aplicativo mais escalonável. Caso o aplicativo comece a receber muito mais carga e você precise fazer uma expansão para oferecer uma melhor experiência ao usuário, é simples habilitar mais contêineres ou adicionar mais nós ao cluster do Kubernetes.

O Kubernetes e o Docker funcionam juntos. O Docker fornece um padrão aberto para empacotar e distribuir aplicativos em contêiner. Usando o Docker, você pode criar e executar contêineres e armazenar e compartilhar imagens de contêiner. É possível executar facilmente um build do Docker em um cluster do Kubernetes, mas o Kubernetes por si só não é uma solução completa. Para otimizar o Kubernetes na produção, implemente ferramentas e serviços adicionais para gerenciar segurança, governança, identidade e acesso, juntamente com fluxos de trabalho de CI/CD (integração contínua/implantação contínua) e outras práticas de DevOps.

Arquiteturas da solução do Kubernetes e do Docker em produção

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778

Visão geral

Use o AKS para simplificar o dimensionamento horizontal, a autorrecuperação, o balanceamento de carga e o gerenciamento de segredos.

Fluxo

  1. 1 Use um IDE, como o Visual Studio, para confirmar as alterações no GitHub.
  2. 2 O GitHub aciona um novo build no Azure DevOps
  3. 3 O Azure DevOps empacota os microsserviços como contêineres e os envia para o Registro de Contêiner do Azure
  4. 4 Os contêineres são implantados no cluster do AKS
  5. 5 O Azure Active Directory é usado para proteger o acesso a recursos
  6. 6 Os usuários acessam os serviços usando aplicativos e sites
  7. 7 O administrador acessa os aplicativos usando um portal do administrador separado
  8. 8 Os microsserviços usam os bancos de dados para armazenar e recuperar informações
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789

Visão geral

O DevOps e o Kubernetes funcionam melhor juntos. Implementando o DevOps seguro em conjunto com o Kubernetes no Azure, você pode obter o equilíbrio entre velocidade e segurança e oferecer código mais rápido em escala. Proteja os processos de desenvolvimento usando CI/CD com controles de política dinâmicos e acelere o loop de comentários com monitoramento constante. Use o Azure Pipelines para entregar com rapidez ao garantir a imposição de políticas críticas com o Azure Policy. O Azure oferece observabilidade em tempo real para seus pipelines de build e de lançamento e a capacidade de aplicar auditoria de conformidade e reconfigurações.

Fluxo

  1. 1 Itere, teste e depure rapidamente diferentes partes de um aplicativo juntas no mesmo cluster do Kubernetes
  2. 2 O código é mesclado com um repositório do GitHub depois que cada build e teste automatizados são executados pelo Azure Pipelines
  3. 3 A imagem de contêiner é registrada no Registro de Contêiner do Azure
  4. 4 Os clusters do Kubernetes são provisionados usando ferramentas como o Terraform; gráficos do Helm instalados pelo Terraform definem o estado desejado dos recursos e das configurações do aplicativo
  5. 5 Os operadores impõem políticas para reger implantações no cluster do AKS
  6. 6 O pipeline de lançamento executa automaticamente a estratégia de implantação predefinida com cada alteração de código
  7. 7 A aplicação da política e a auditoria são adicionadas ao pipeline de CI/CD usando o Azure Policy
  8. 8 A telemetria de aplicativo, o monitoramento de integridade de contêiner e a análise de logs em tempo real são obtidos usando o Azure Monitor
  9. 9 Insights são usados para solucionar problemas e suprir os próximos planos de sprint

Aproveite a força do Kubernetes com o Azure

Implantar e gerenciar os aplicativos em contêiner é fácil com o AKS (Serviço de Kubernetes do Azure). O AKS oferece Kubernetes sem servidor, uma experiência integrada de CI/CD e segurança e governança de nível empresarial. Una suas equipes de desenvolvimento e operações em uma única plataforma para criar, entregar e dimensionar aplicativos rapidamente com confiança.

Introdução ao Kubernetes e ao Windows