Ignorar Navegação

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

Microsserviços com o AKS

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.

Secure DevOps para AKS

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.

;

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