Do Docker ao Kubernetes

Do Docker ao Kubernetes

Os contêineres indubitavelmente se tornaram uma palavra da moda tecnológica nos últimos anos. O surgimento e a ascensão da tecnologia de conteinerização, junto com a arquitetura de microsserviços, DevOps e os conceitos nativos da nuvem que ela gerou, tiveram um impacto profundo na indústria de software.

Os contêineres oferecem inúmeras vantagens. Sua encapsulação abrangente, implantação conveniente e inicialização e agendamento leves contribuíram para sua ampla adoção. Quando combinados com sistemas de orquestração, os contêineres simplificam o gerenciamento e a iteração de aplicativos, independentemente da complexidade do sistema. Além disso, aplicativos conteinerizados apresentam excelente portabilidade, sendo executados perfeitamente em qualquer ambiente que possua um tempo de execução de contêiner compatível com os padrões.

Contêineres leves e computação em nuvem elástica se complementam perfeitamente. A adaptabilidade dos contêineres a diversos ambientes operacionais e suas capacidades de inicialização rápida, juntamente com a escalabilidade massiva de recursos da expansão dinâmica da nuvem, capacitam aplicativos conteinerizados baseados em nuvem a escalar para milhares de instâncias em um curto período. Portanto, a nuvem serve como uma plataforma ideal para aplicativos conteinerizados, facilitando sua execução e expansão.

Antes do reconhecimento generalizado do Docker, os provedores de nuvem já estavam explorando e utilizando tecnologias semelhantes a contêineres. A natureza multitenente da nuvem exige isolamento de ambientes, tornando os provedores de nuvem tanto usuários quanto beneficiários da conteinerização. Enquanto alguns optaram por soluções proprietárias, nem todos adotaram diretamente o Docker.

Por exemplo, o AWS Elastic Beanstalk usava uma tecnologia privada semelhante a contêineres para isolar aplicativos web. Posteriormente, estendeu seu suporte para aplicativos empacotados como contêineres Docker.

Com a ascensão do Docker, os principais provedores de nuvem pública concordaram em começar a oferecer serviços PaaS padronizados relacionados a contêineres, aprimorando-os continuamente. Traçar a evolução do PaaS de contêineres revela estágios distintos de desenvolvimento.

Inicialmente, as plataformas de contêineres em nuvem priorizavam a execução perfeita de contêineres Docker na nuvem. Esses serviços visavam principalmente ajudar os usuários a criar clusters de máquinas virtuais subjacentes, aliviando o fardo do gerenciamento manual de máquinas virtuais. No entanto, à medida que os aplicativos conteinerizados se tornaram mais complexos, a orquestração emergiu como uma necessidade urgente. Consequentemente, os fornecedores introduziram e fortaleceram suas soluções de orquestração de contêineres.

Durante a era de frameworks de orquestração concorrentes, alguns fornecedores adotaram uma abordagem multifacetada. Por exemplo, o Azure Container Service da Microsoft suportava Docker Swarm, Apache Mesos (DC/OS) e Kubernetes. Outros, como a AWS com seu Elastic Container Service (ECS), optaram por métodos de orquestração proprietários para melhorar a integração com seus serviços de nuvem existentes.

Como sabemos, o Kubernetes emergiu como o vencedor na batalha dos frameworks de orquestração, tornando-se o padrão de fato. Os provedores de nuvem rapidamente mudaram de marcha, priorizando o suporte ao Kubernetes na nuvem e lançando serviços específicos para Kubernetes, como o AWS Elastic Kubernetes Service (EKS) e o Azure Kubernetes Service (AKS). Da mesma forma, a Alibaba Cloud gradualmente eliminou o suporte ao Swarm em seu serviço de contêiner, concentrando-se na edição Kubernetes (ACK).

O suporte da nuvem à tecnologia de contêineres evoluiu em conjunto com o ecossistema de contêineres, com os provedores de nuvem desempenhando papéis significativos como participantes e facilitadores. Por exemplo, o Google Kubernetes Engine (GKE) no Google Cloud, sendo “nascido e criado” dentro do ecossistema, tem consistentemente definido o benchmark para serviços Kubernetes baseados em nuvem.

Os serviços Kubernetes baseados em nuvem oferecem várias vantagens distintas em relação a clusters Kubernetes auto-hospedados.

Em primeiro lugar, devido à natureza multitenente da nuvem, muitos serviços Kubernetes baseados em nuvem eliminam a necessidade de provisionar nós Master. Os usuários só precisam criar e pagar pelos nós Worker, enquanto a plataforma de nuvem fornece e gerencia os nós Master, reduzindo o consumo de recursos e os custos operacionais.

Em segundo lugar, apesar de sua complexidade, o Kubernetes possui um design abstrato excepcional que permite extensões amplas e flexíveis. Os provedores de nuvem investiram pesadamente nessa área, permitindo que vários componentes IaaS e PaaS em suas plataformas se integrem perfeitamente ao ecossistema Kubernetes, promovendo uma integração mais estreita.

Por exemplo, no domínio dos Ingress Controllers, comumente usados para direcionar o tráfego externo, existem implementações de balanceadores de carga baseados em nuvem, como o AWS ALB Ingress Controller e o Azure AKS Application Gateway Ingress Controller. Esses controladores criam instâncias de serviços PaaS correspondentes para atender ao cluster Kubernetes.

Além disso, no nível StorageClass, onde as políticas de alocação dinâmica de volumes de armazenamento são definidas no Kubernetes, é possível especificar o uso de serviços de armazenamento em bloco baseados em nuvem para provisionar e montar armazenamento persistente sob demanda.

Do ponto de vista da flexibilidade arquitetural, os serviços Kubernetes baseados em nuvem introduzem outra vantagem: implantações multi-cluster.

Com a redução da barreira de entrada para estabelecer clusters Kubernetes, se houver pouca interdependência entre unidades de negócios, podem ser criados clusters Kubernetes separados para cada unidade. Essa abordagem melhora o isolamento e permite a escalabilidade independente de diferentes clusters.

Do Docker ao Kubernetes, a evolução contínua do ecossistema de contêineres inaugurou a onda de tecnologias nativas da nuvem. Os desenvolvedores não estão sozinhos em sua busca por aprender e adotar a tecnologia de contêineres. Os fornecedores de computação em nuvem também estão competindo para se posicionar como as plataformas ideais para executar contêineres, introduzindo uma miríade de serviços relacionados a contêineres para atrair usuários de contêineres para suas nuvens.

Curiosamente, existe uma relação sutil entre os contêineres e certos serviços de nuvem promovidos ativamente pelos fornecedores. Há um elemento de competição e substituição em jogo.

Da mesma forma que algumas funcionalidades de PaaS podem ser replicadas usando IaaS, os contêineres, com sua excepcional liberdade de construção e mecanismos convenientes de empacotamento e implantação, podem substituir parcialmente certos componentes reutilizáveis dentro da nuvem. Além disso, os contêineres podem ser orquestrados como parte de um sistema maior, servindo como um meio para mitigar o vendor lock-in.

Apesar da ameaça potencial que os contêineres representam para serviços específicos de nuvem, a computação em nuvem mais uma vez demonstrou sua neutralidade tecnológica. As plataformas de nuvem abraçaram e apoiaram abertamente a execução de contêineres, chegando até mesmo a designá-los como serviços-chave para o desenvolvimento. Capacitar os usuários com escolha exemplifica a inclusividade da nuvem.

Novita AI é a plataforma all-in-one na nuvem que impulsiona suas ambições de IA. APIs integradas, serverless, instância GPU - as ferramentas econômicas que você precisa. Elimine a infraestrutura, comece gratuitamente e torne sua visão de IA realidade.

Leitura Recomendada:

  1. Desmistificando o Agendamento do Kubernetes: Um Mergulho Profundo em Predicates e Priorities
  2. O que Você Precisa Saber Sobre Docker