Kubernetes vs. Docker
Compile, entregue e dimensione aplicações mais rapidamente com as tecnologias de contentor que funcionam melhor em conjunto.
A questão: Kubernetes ou Docker?
A conversa sobre o Kubernetes ou o Docker é frequentemente reduzida à questão de "um ou outro": devo utilizar o Kubernetes ou o Docker? Esta abordagem é como comparar maçãs a tarte de maçã e é um erro comum assumir que se tem de escolher um em detrimento do outro.
A diferença entre o Kubernetes e o Docker compreende-se mais facilmente quando enquadrada como uma questão "ambos-e". O facto é que não tem de escolher. Essencialmente, são duas tecnologias diferentes que funcionam bem em conjunto para efeitos de compilação, entrega e dimensionamento de aplicações contentorizadas.
O Docker e a ascensão 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, os quais podem ser executados na cloud ou no local. A Docker, Inc, apesar de ter um nome semelhante, é 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.
Embora 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 Docker Engine, um ambiente de runtime. Permite-lhe compilar e executar contentores em qualquer máquina de desenvolvimento. Depois, pode armazenar ou partilhar 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 uma tarefa mais complexa. Embora o Docker forneça uma norma aberta para empacotar e distribuir aplicações contentorizadas, as potenciais complexidades podem somar-se depressa. Como é que se coordena e agenda tantos contentores? Como é que os vários contentores diferentes na aplicação comunicam entre si? Como pode dimensionar 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 serão 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 que pretende, 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?
O Kubernetes é um software de orquestração open-source que fornece uma API para controlar como e onde é que esses contentores serão 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 que pretende, e poderá gerir o respetivo ciclo de vida para manter as suas aplicações operacionais.
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 a partir de um ú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 seus contentores. O Kubernetes também possui 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 à equipa de TI disponibilizar mais facilmente acesso a recursos de 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 de 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 Docker para:
- Tornar a infraestrutura mais robusta e aumentar a disponibilidade da aplicação. A aplicação permanecerá online, mesmo que alguns dos nós fiquem offline.
- Tornar a sua 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 melhor experiência de utilizador, é 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 as aplicações contentorizadas. 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 ou 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 gestão da arquitetura baseada 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 que possa fornecer código rapidamente e em 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 e 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.
Recursos
Vídeos, webinars, demonstrações e sessões técnicas
Comunidade de open source
Junte-se a outros utilizadores do AKS no GitHub, no KubeCon ou numa meetup do Kubernetes próxima.