Kubernetes: O que é, como funciona e para que serve essa ferramenta

Contêineres transformaram radicalmente o desenvolvimento de softwares, assim como outras áreas de TI. Essa nova tecnologia permite executar softwares em um ambiente virtual projetado especialmente para isso. Tudo que um software precisa já está no contêiner e fica ali guardado, de forma segura e confiável. Contêineres também possibilitam a execução de múltiplas instâncias paralelamente, o que é outra de suas vantagens.

Para gerenciar contêineres com praticidade — pois usuários quase sempre trabalham com vários ao mesmo tempo — alguma ferramenta deve ser utilizada. Kubernetes, às vezes abreviado como K8s, é uma ferramenta de orquestração de contêineres especializada em lidar com grandes volumes de contêineres.

Managed Kubernetes da IONOS

O jeito mais simples de gerenciar cargas de trabalho em contêineres. Instalação de clusters Kubernetes totalmente automatizada, visibilidade máxima e controle de clusters K8s.

Armazenamento persistente
Suporte especializado 24 horas
Instalação de cluster automatizada

O que é Kubernetes: História e objetivos

O Kubernetes surgiu há poucos anos, mas já conquistou uma boa reputação. Isso talvez seja, pelo menos em parte, devido a sua ligação com a gigante de tecnologia Google, empresa que deu o impulso inicial a esse projeto open source. Alguns colaboradores do Google ajudaram a desenvolver o Kubernetes, mas muitos outros não relacionados à empresa também trabalharam no software. Em 2015, finalmente foi lançada a primeira versão do Kubernetes. Hoje, essa ferramenta é compatível com diversas plataformas de nuvem (como Azure e AWS), podendo ser nelas utilizada.

O Kubernetes não tinha, contudo, esse objetivo inicialmente. Em um primeiro momento, o projeto foi grandemente influenciado pelos sistemas do Google Borg e Omega, utilizados para gerenciar clusters internamente. Assim sendo, ninguém pensava em utilizá-lo em aplicações de nuvens virtuais. Quando a versão de código aberto foi lançada, o desenvolvimento do Kubernetes tornou-se público.

Para exibir esse vídeo precisamos usar cookies de terceiros. Você pode acessar e mudar suas configurações de cookies here.

O Kubernetes é escrito em Go, linguagem de programação desenvolvida pelo Google, e pode ser utilizado tanto em nuvem como em computadores locais e centros de processamento on-premises (internos). O compromisso com soluções em nuvem também fica evidente nos rumos que o projeto tomou: atualmente o Google, em parceria com algumas outras empresas, dá continuidade ao desenvolvimento open source do Kubernetes, sob a tutela da Cloud Native Computing Foundation, além de contar com a ajuda da enorme comunidade.

Fato

A Niantic, desenvolvedora de jogos mobile, usou Kubernetes para desenvolver o Pokémon Go. Leia mais sobre o interessante processo de criação neste estudo de caso.

O que é Kubernetes: Funcionamento

Kubernetes é um sistema de orquestração de contêineres. Isso quer dizer que seu software não cria contêineres, somente os administra. Ele faz isso por meio da automatização de processos, que facilita a realização de testes por desenvolvedores, assim como manutenções e lançamentos de aplicações. A arquitetura do Kubernetes é baseada em uma hierarquia clara:

  • Contêiner (container): Um contêiner contém aplicações e ambientes de software.
  • Pod: Essa unidade do Kubernetes agrupa contêineres que devem funcionar juntos em uma aplicação.
  • (node): Um ou mais pods são executados em um nó, que pode ser tanto uma máquina virtual quanto física.
  • Cluster: vários nós são agrupados em umcluster.

Além disso, a arquitetura do Kubernetes é baseada no princípio master/slave(mestre/escravo). Nós são usados comoslaves, ou seja, eles constituem a parte controlada do sistema. Isso quer dizer que nós são gerenciados e comandados pelomaster Kubernetes.

As tarefas de um master incluem, por exemplo, distribuir pods entre nós. Realizando um monitoramento contínuo, o master também pode intervir quando um nó deixa de funcionar e duplicá-lo imediatamente para compensar a falha. O estado real é constantemente comparado com um estado teórico e ajustado, sempre que necessário. Esses processos acontecem automaticamente. O master também é o ponto de acesso dos administradores, que podem orquestrar contêineres por meio dele.

Tanto o master quanto os nós têm estruturas específicas próprias.

Nós

O slave, também chamado de minion, é um servidor físico ou virtual, no qual um ou mais contêineres estão ativos. Cada nó contém um ambiente de tempo de execução (runtime environment) para contêineres. Também está ativo no nó o chamado kubelet, componente que possibilita a comunicação com omaster. Ele também é responsável por iniciar e parar os contêineres. Okubeletutiliza o serviço cAdvisor, que registra a utilização de recursos, o que é interessante para análises. Por fim, há ainda okube-proxy, usado para realizar balanceamento de carga (load balancing) e possibilitar conexões de rede por TCP ou outros protocolos.

Master

O master também é um servidor. Para garantir o controle e o monitoramento dos nós, é no master que o Controller Manager é executado. Esse componente, por sua vez, reúne em si vários processos:

  • O node controller, que monitora os nós e reage quando eles deixam de funcionar.
  • O replication controller, que garante que a quantidade desejada depods sempre seja executada simultaneamente.
  • O endpoints controller, que controla o objetoendpoint, responsável por conectar serviços epods.
  • Os componentes service accountetoken controller, que administram onamespacee geramtokens de acesso API.

Além do Controller Manager, o master executa um banco de dados chamado etcd. Nesse banco de dados de chave-valor (key value) fica armazenada a configuração do cluster pelo qual o master é responsável. Com o componente scheduler, o master realiza automaticamente a distribuição de pods entre os nós. A conexão com o nó é possibilitada pelo servidor API integrado no master. Ele disponibiliza uma interface REST e troca informações com o cluster por JSON. Assim, por exemplo, também os diversos controllers podem acessar os nós.

Kubernetes e Docker são concorrentes?

Não faz sentido perguntar se é melhor usar o Kubernetes ou o Docker, pois os dois programas podem ser utilizados em conjunto. Mesmo usando o Kubernetes, o Docker (ou outra plataforma de contêineres) continua sendo responsável pela composição e execução dos contêineres. O Kubernetes acessa esses contêineres e assume somente a orquestração e a automatização dos processos. Sozinho, o Kubernetes não é capaz de criar contêineres.

Em teoria, o único concorrente do Kubernets é o Docker Swarm, ferramenta de orquestração do fabricante do Docker. Ela também trabalha com clusters e oferece funções semelhantes às do Kubernetes.

Dica

Entenda melhor as diferenças entre os sistemas, assim como suas possibilidades de combinação na nossa comparação entre Docker e Kubernetes.

O que é Kubernetes: Aplicações e vantagens

Hoje em dia o Kubernetes cumpre um papel importante no desenvolvimento de softwares, especialmente em projetos ágeis. A orquestração de contêineres facilita ciclos de desenvolvimento, testes e implementação (além de todas as possíveis estapas intermediárias). O Kubernetes permite simplesmente mover contêineres de um nível para outro, automatizando muitas etapas de trabalho.

Escalabilidade é um fator importante, principalmente para quem aluga memória externa em nuvem. O Kubernetes otimiza o aproveitamento de recursos, pois em vez de deixar funcionando máquinas que não são necessárias no momento, libera esses recursos para serem utilizados por outras tarefas (ou por nenhuma), poupando custos. Graças ao escalonamento automático (autoscaling), o próprio Kubernetes garante que sejam usados apenas recursos realmente necessários. Escalonamento ágil é, ainda, muito importante também no sentido contrário: ao lançar um software pela primeira vez, é impossível estimar corretamente como será sua intensidade de uso. Para evitar quedas do sistema em caso de demanda extrema, o Kubernetes pode rapidamente disponibilizar novas instâncias.

Outra vantagem do Kubernetes é que ele permite conectar várias plataformas entre si com facilidade. Assim é possível, por exemplo, utilizar a solução em uma nuvem híbrida. Neste modelo, o sistema fica parcialmente armazenado em um servidor local próprio e parcialmente em um centro de processamento remoto (ou seja, em nuvem). Essa possibilidade aumenta ainda mais a escalabilidade: se você precisar de mais recursos, é fácil e rápido adquiri-los com seu provedor de nuvem.

Por fim, o Kubernetes também ajuda desenvolvedores a manter controle sobre processos, já que cada contêiner pode ser claramente identificado. Ainda, o Kubernetes fornece informações sobre o estado de cada uma das instâncias e oferece controle de versões, permitindo a visualização de históricos e atualizações. Aliás, o método de lançamento das atualizações é uma das principais vantagens do sistema: novas versões podem ser implementadas sem interromper o funcionamento da anterior. Para isso, pods são atualizados em sequência, e não ao mesmo tempo. Isso vale tanto para versões internas de testes quanto para o lançamento de novas versões para usuários finais.

Já que o próprio Kubernetes configura vários aspectos da orquestração, algumas etapas de trabalho suscetíveis a erros são eliminadas. Portanto, o Kubernetes geralmente é considerado um sistema seguro. É raro acontecerem falhas, já que quando um pod deixa de funcionar como planejado, o master detecta o erro imediatamente e implementa uma solução.

Para exibir esse vídeo precisamos usar cookies de terceiros. Você pode acessar e mudar suas configurações de cookies here.
Dica

Você quer trabalhar com Kubernetes? Acesse nosso tutorial Kubernetes e dê seus primeiros passos usando esta ferramenta.

Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações