Kubernetes: o que é e como funciona?
A era do cloud computing nos trouxe a capacidade de escalar aplicações em uma magnitude inimaginável a apenas algumas décadas atrás.
Nesse post vamos mostrar uma das ferramentas que tornou isso possível: os Kubernetes.
O que é Kubernetes?
No mundo da Tecnologia da Informação, é possível servir aplicações e serviços utilizando servidores físicos, virtuais e containers.
A escalabilidade desses serviços vai ficando respectivamente mais fácil conforme avançamos nessa lista.
O mundo dos containers trouxe a possibilidade de entregar aplicativos com todas as dependências necessárias para seu funcionamento, ocupando pouco espaço e facilitando implementações, independentemente do ambiente disponível.
Com essa nova facilidade, surgiram novos desafios sobre como manter essa estrutura organizada, confiável e escalável.
Surge, então, os Kubernetes, antigo projeto BORG, nascidos pelas mãos dos engenheiros do Google e que rodam todos os serviços que a gigante da internet entrega aos seus usuários.
Trata-se de um orquestrador, termo muito comum no mundo de TI para ferramentas que organizam e controlam ambientes que tendem ao caos.
Os Kubernetes orquestram um conjunto de servidores (físicos ou virtuais) para que essas máquinas forneçam recursos computacionais aos contêineres que vão entregar serviços de aplicação e bases de dados.
Como funciona?
Para que os Kubernetes possam comandar a orquestra de servidores e contêineres, é necessário que várias ferramentas trabalhem em conjunto.
Vamos conhecer agora um pouco do funcionamento dessa estrutura e seus componentes:
API Server
Um dos componentes essenciais, fornece uma API para que os Kubernetes possam utilizar parâmetros JSON via HTTP.
Isso não somente entrega a interface de funcionamento interno dos Kubernetes, mas viabiliza sua administração.
A API processa e valida solicitações e atualiza o estado do cluster em uma base de dados de chave e valor que também faz parte do ecossistema dos Kubernetes.
Assim, é possível configurar cargas de trabalho e manter a comunicação entre as ferramentas do orquestrador.
Controller Manager
Esse é o processo que controla os Kubernetes, se comunicando com a API para criar, atualizar e excluir recursos que estão sendo gerenciados como, por exemplo, os pods.
Scheduller
O Agendador é responsável por selecionar em que nó do cluster o pod será executado, fazendo a distribuição e escalando a quantidade de pods de acordo com a demanda e a capacidade computacional dos nós.
É nele que ficam programadas as cargas de trabalho e as políticas de disponibilidade, restrições e requisitos de qualidade de serviço.
Em resumo: ele que controla a oferta de recursos com as demandas de carga de trabalho.
Node
Trata-se do servidor que fornece a capacidade computacional ao cluster. Pode ser um servidor físico ou uma máquina virtual.
Em um Node deverão estar instalados os serviços necessários para executar os pods e serviços de controle dos Kubernetes.
Um Node pode possuir 2 funções principais:
- Master,
- Worker.
O Master vai executar serviços de controle do cluster, originando todos os comandos de administração e repassando tarefas aos workers, que, por sua vez, possuem os serviços necessários para receber ordens do Master e realizar as cargas de trabalho.
Pod
Trata-se do conjunto de contêineres em execução.
Dentro do escopo dos Kubernetes, esse é o menor e mais simples objeto.
ReplicaSet
É o serviço responsável por garantir que a quantidade de réplicas funcionais de um pod esteja obedecendo à quantidade programada.
Kubelet
O Kubelet é o agente do kubernetes, presente em todos os nós e monitorando os contêineres.
Kubectl
Ferramenta de operação do cluster Kubernetes via linha de comando.
Essa ferramenta se comunica com a API dos Kubernetes, entregando-lhe comandos e configurações.
Por que uma ferramenta de orquestração precisa ser usada?
A medida que aplicações vão crescendo, seja em funcionalidades ou em quantidade de usuários, se torna necessário viabilizar sua escala para suportar e atender a demanda.
O orquestrador entrega recursos eficientes e maduros para controlar a entrega de serviços em escala, dinamizando e abstraindo tarefas que consumiriam muito tempo dos desenvolvedores da aplicação e da equipe de operações.
Um bom exemplo é a quantidade de deploys informada pelo Google, que chega a dois bilhões por semana.
Sem a orquestração dos Kubernetes, isso seria financeiramente inviável, pois demandaria muito mais recursos humanos e computacionais para controlar essas tarefas e entregar serviços.
Gostou do nosso post?! Acesse nosso site e conheça os produtos da CL9 Tecnologias especialistas em cloud computing!
(Imagens: divulgação)