Kubernetes vs. Docker

Compile, entregue e dimensione aplicações mais depressa com as tecnologias de contentor que funcionam melhor em conjunto.

A questão: Kubernetes ou Docker

Muitas vezes, a conversa sobre Kubernetes e Docker é reduzida a "um-outro": "Devo utilizar o Kubernetes ou o Docker?". Esta abordagem é como comparar maçãs e tarte de maçã e é um erro comum pensar-se que se tem de escolher um em detrimento do outro.

A diferença entre o Kubernetes e o Docker compreende-se mais facilmente se enquadrada como "ambos-e". O facto é que não tem de escolher. Essencialmente, são duas tecnologias diferentes que funcionam bem em conjunto para a compilação, entrega e dimensionamento de aplicações contentorizadas.

O Docker e o despontar da contentorização

O Docker é uma tecnologia open-source e um formato de ficheiro de contentor para automatizar a implementação de aplicações como contentores portáteis e autossuficientes que podem ser executados na cloud ou no local. A Docker, Inc., apesar de ter um nome parecido, é uma das empresas que cultiva a tecnologia open-source do Docker para execução no Linux e no Windows em colaboração com fornecedores de cloud, como a Microsoft.

Não obstante a ideia de isolar ambientes não seja nova e existam outros tipos de software de contentorização, o Docker cresceu e tornou-se no formato de contentor predefinido em anos recentes. O Docker inclui o motor Docker, que é um ambiente de runtime. Permite compilar e executar contentores em qualquer máquina de desenvolvimento e, depois, armazenar ou partilhar as imagens de contentor através de um registo de contentor como o Docker Hub ou o Azure Container Registry.

À medida que as aplicações crescem e ocupam múltiplos contentores implementados em vários servidores, operá-las torna-se mais complexo. Embora o Docker forneça uma norma aberta para empacotar e distribuir aplicações contentorizadas, as potenciais complexidades podem somar-se depressa. Como coordena e agenda tantos contentores? Como é que os vários contentores diferentes na aplicação comunicam entre si? Como dimensiona muitas instâncias de contentores? É aqui que o Kubernetes pode ajudar.

O Kubernetes e a orquestração de contentores

O Kubernetes é um software de orquestração open-source que fornece uma API para controlar como e onde é que esses contentores vão ser executados. Permite-lhe executar os contentores e as cargas de trabalho do Docker e ajuda a contornar algumas das complexidades operacionais inerentes ao dimensionamento de vários contentores implementados em múltiplos servidores.

Com o Kubernetes, pode orquestrar um cluster de máquinas virtuais e agendar a execução de contentores nessas máquinas virtuais com base nos recursos de computação disponíveis e nos requisitos de recursos de cada contentor. Os contentores estão agrupados em pods, a unidade operacional básica do Kubernetes. Estes contentores e pods podem ser dimensionados para o estado pretendido e poderá gerir o respetivo ciclo de vida para manter as suas aplicações operacionais.

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

Apesar de ser comum comparar o Kubernetes ao Docker, a comparação mais adequada é Kubernetes vs. Docker Swarm. O Docker Swarm é a tecnologia de orquestração da Docker que se dedica ao clustering para contentores do Docker e está totalmente integrado no ecossistema da Docker e utiliza a sua própria API.

Uma diferença fundamental entre o Kubernetes e o Docker é que o primeiro destina-se a execução num cluster e o segundo num único nó. O Kubernetes é mais extenso do que o Docker Swarm e tem como objetivo coordenar clusters de nós em escala em produção de forma eficiente. Os pods do Kubernetes, que são unidades de agendamento que contêm um ou mais contentores no ecossistema do Kubernetes, são distribuídos pelos nós para proporcionarem elevada disponibilidade.

O Kubernetes e o Docker trabalham melhor em conjunto.

Embora a promessa dos contentores seja programar uma vez e executar em qualquer local, o Kubernetes oferece o potencial de orquestrar e gerir todos os recursos de contentores num único plano de controlo. É útil em termos de rede, balanceamento de carga, segurança e dimensionamento em todos os nós do Kubernetes que executam os contentores. O Kubernetes também tem um mecanismo de isolamento incorporado como os espaços de nomes que permitem agrupar recursos de contentores por permissão de acesso, ambientes de teste, entre outros critérios. Estas construções permitem que a equipa de TI disponibilize mais facilmente acesso a recursos self-service a programadores e que estes colaborem até mesmo na mais complexa arquitetura de microsserviço sem terem de criar um protótipo de toda a aplicação no ambiente de desenvolvimento. Combinar as práticas de DevOps com contentores e Kubernetes origina ainda uma linha base de arquitetura de microsserviços que promove uma entrega rápida e uma orquestração dimensionável de aplicações nativas da cloud.

Resumidamente, utilize o Kubernetes com o Docker para:

  • Tornar a infraestrutura mais robusta e aumentar a disponibilidade da aplicação. A aplicação permanecerá online, mesmo que alguns nós fiquem offline.
  • Tornar a aplicação mais dimensionável. Se a aplicação começar a receber muito mais carga e precisar de aumentar horizontalmente para poder oferecer uma experiência de utilizador melhor, é fácil acelerar mais contentores ou adicionar mais nós ao cluster do Kubernetes.

O Kubernetes e o Docker trabalham em conjunto. O Docker fornece uma norma aberta para empacotar e distribuir aplicações em contentores. Através do Docker, pode criar e executar contentores, bem como armazenar e partilhar imagens de contentor. É fácil executar uma compilação do Docker num cluster do Kubernetes, o qual não é, por si só, uma solução completa. Para otimizar o Kubernetes na produção, aplique ferramentas e serviços adicionais para gerir a segurança, a governação, a identidade e o acesso, juntamente com os fluxos de trabalho de integração contínua/implementação contínua (CI/CD) e outras práticas de DevOps.

Arquiteturas de solução Kubernetes e Docker em produção

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Descrição geral
  2. Fluxo

Descrição geral

Utilize o AKS para simplificar a implementação e a gestão de arquiteturas baseadas em microsserviços. O AKS simplifica o dimensionamento horizontal, a autorrecuperação, o balanceamento de carga e a gestão de segredos.

Fluxo

  1. 1 O Programador utiliza um IDE como o Visual Studio para consolidar as alterações ao GitHub
  2. 2 O GitHub aciona uma nova compilação no Azure DevOps
  3. 3 O Azure DevOps empacota os microsserviços como contentores e envia-os para o Azure Container Registry
  4. 4 Os contentores são implementados no cluster do AKS
  5. 5 Os utilizadores acedem aos serviços através de aplicações e do site
  6. 6 O Azure Active Directory é utilizado para proteger o acesso aos recursos
  7. 7 Os microsserviços utilizam bases de dados para armazenar e obter informações
  8. 8 O administrador acede através de um portal de administração separado
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
  1. Descrição geral
  2. Fluxo

Descrição geral

O DevOps e o Kubernetes funcionam melhor em conjunto. Implementar o DevOps seguro juntamente com o Kubernetes no Azure permite-lhe atingir o equilíbrio perfeito entre velocidade e segurança para fornecer código rapidamente e à escala. Coloque proteções em torno dos processos de desenvolvimento através de CI/CD com controlos de política dinâmicos e acelere o ciclo de comentários com monitorização constante. Utilize os Pipelines do Azure para assegurar um fornecimento célere ao mesmo tempo que garante a imposição de políticas fundamentais com o Azure Policy. O Azure oferece observabilidade em tempo real para os seus pipelines de compilação e versão, bem como a capacidade de aplicar facilmente auditoria e reconfigurações de conformidade.

Fluxo

  1. 1 Os programadores podem iterar, testar e depurar rapidamente diferentes partes de uma aplicação no mesmo cluster do Kubernetes
  2. 2 O código é intercalado num repositório do GitHub, após o qual as compilações e os testes automatizados são executados pelo Azure Pipelines
  3. 3 A imagem de contentor é registada no Azure Container Registry
  4. 4 Os clusters do Kubernetes são aprovisionados com ferramentas como o Terraform; os gráficos Helm, instalados pelo Terraform, definem o estado desejado dos recursos e das configurações das aplicações
  5. 5 Os operadores aplicam políticas para governar as implementações no cluster do Kubernetes
  6. 6 O pipeline de versão executa automaticamente uma estratégia de implementação predefinida com cada alteração de código
  7. 7 A aplicação e a auditoria de políticas são adicionadas ao pipeline CI/CD com o Azure Policy
  8. 8 A telemetria de aplicações, a monitorização do estado de funcionamento dos contentores e a análise de registos em tempo real são obtidas através do Azure Monitor
  9. 9 As informações são utilizadas para resolver problemas e alimentar os próximos planos de sprint

Crie com base na robustez do Kubernetes com o Azure

É fácil implementar e gerir aplicações contentorizadas com o Azure Kubernetes Service (AKS). O AKS disponibiliza o Kubernetes sem servidor, uma experiência de CI/CD integrada, bem como segurança e governação de nível empresarial. Una as suas equipas de desenvolvimento e operações numa única plataforma para criar, fornecer e dimensionar aplicações com rapidez e confiança.

Introdução ao Kubernetes e ao Docker