Saiba como a virtualização por container revolucionou a infraestrutura de ti! Parte 3

Saiba como a virtualização por container revolucionou a infraestrutura de ti! Parte 3

Olá pessoal, essa é a terceira parte de uma série de 3 posts, onde abordamos o crescimento da virtualização. No primeiro post falamos sobre o surgimento e as evoluções da virtualização. O segundo post falamos sobre o LXC e como a virtualização por container ganhou o seu espaço. E no final do segundo post fiz uma a seguinte pergunta:

“Sabemos que em um único host a gestão da virtualização por container funciona bem, mas como seria a gestão dos containers em um ambiente totalmente distribuído? Como eu faria se surgisse a necessidade de configurar um ambiente altamente escalável usando recursos e clusters espalhados na nuvem?”

Esse é o tema final dessa série, então, se você ainda não leu os posts anteriores eu sugiro que leia-os, pois esse post foi criado com base nos anteriores.

KUBERNETES, A RESPOSTA PARA VIRTUALIZAÇÃO EM NUVEM

O kubernetes é uma plataforma de código aberto que automatiza as operações de container Linux. Ele elimina muitos dos processos manuais envolvidos na implantação e dimensionamento de aplicativos em containers. É possível agrupar vários hosts que virtualizam containers do Linux, e usar o kubernetes na gestão desses clusters. O interessante do kubernetes é que esses clusters podem ser hosts em nuvens públicas, privadas ou híbridas.

PILOTO DA PLATAFORMA KUBERNETES

O Google foi um dos primeiros contribuintes para a  de containers Linux e falou publicamente sobre como tudo no Google é executado em containers. Para você ter uma ideia do poder dessa tecnologia, o Google implementa mais de 2 bilhões de containers por semana, todas elas gerenciadas através do kurbernetes.

Sem sombra de duvidas o kubernetes é uma tecnologia muito forte para a computação em nuvem. E grandes empresas como a Red Hat faz uso da tecnologia. A Microsoft adotou o kubernetes como sistema de gerenciamento da sua plataforma Azure containers. E a expectativa que isso ganhe mais proporção com o apoio de empresas desse porte.

ARQUITETURA DO KUBERNETES

Para o kubernetes conseguir gerir múltiplos containers ele precisa de 5 componentes e uma interface de interação com o usuário. São eles:

Etcd – O kubernetes armazena todo o seu estado de cluster no etcd. Podemos dizer que o etcd seria uma espécie de banco de dados. Isso por que ele armazena as informações dos containers como serviços, redes, nós do cluster, localização dos containeres, CPUs, Memória, versões de aplicações.

API Server – É uma aplicação que interage com os clusters de containers e as ferramentas de controle do kubernetes. O API Server é o único componente do Kubernetes que se conecta ao etcd e todos os outros componentes devem passam por ele.

Kubectl – É uma interface de linha de comando que permite a interação do usuário com os clusters do kubernetes.

Kubernetes scheduler – O scheduler é responsável pelo provisionamento de um container de forma automática. O provisionamento de um container é apenas o trabalho mais simples executado pelo scheduler. Isso por que antes de fazer o provisionamento o scheduler tem o trabalho de selecionar o host ideal para a aplicação. Se você tem centenas de máquinas que se enquadra nas configurações exigidas pela a aplicação o scheduler classifica as maquinas e escolhe qual o melhor host para a aplicação.

Kubernetes controller mananger – É o Daemon responsável por monitorar o estado dos hosts virtual (Pods) com base nas informações recebidas da API Server. Essas informações são utilizadas para tomada de decisão do controller, é ele quem controla as replicações dos containers podendo criar ou excluir um container com base nas informações recebidas.

Kubelet – É o principal agente do nó. É responsável por fornecer o estado atual dos containers em cluster informando se o container do cluster está em atividade. Ele trabalha de forma individual, verificando container por container e repassando a informação para o API Server.

CUMPRINDO COM A PROPOSTA

Olhando toda a estrutura podemos perceber a organização da ferramenta. O kubernetes cumpre à linha os princípios da virtualização promovendo:

  • Escalabilidade: O software pode ser implantado pela primeira vez de maneira escalável em todos os Pods, e as implementações podem ser escaladas para dentro ou para fora a qualquer momento.
  • Visibilidade: Identificar implementações concluídas em processo e em falha com recursos de consulta de status.
  • Economia de tempo: Interrompe uma implantação a qualquer momento e retome-a mais tarde.
  • Controle de versão: Atualize os Pods implementados usando versões mais recentes das imagens do aplicativo e reverta para uma implantação anterior se a versão atual não for estável.

Entre outras possibilidades, Kubernetes simplifica algumas operações específicas de implantação que são especialmente valiosas para desenvolvedores de aplicativos modernos. Estes incluem o seguinte:

  • Autocaling horizontal: Os controladores automáticos do Kubernetes dimensionam automaticamente o número de Pods de uma implantação com base no uso de recursos especificados (dentro de limites definidos).
  • Atualizações: As atualizações para uma implantação do Kubernetes são orquestradas em “rolling fashion”, em todos os Pods da implantação. Essas atualizações são organizadas para trabalhar com limites predefinidos sobre o número de Pods.
  • Implantação: Um padrão utilizado para implantar uma nova versão de um sistema consiste em atualizar é testar pela primeira vez a nova versão em produção, em paralelo com a versão anterior.

Agora chegamos ao objetivo dos nossos três posts onde abordamos toda a evolução da virtualização até chegar aqui no container gerenciado pelo kubernetes. Essa é uma ferramenta poderosa e autônoma, capaz de tomar a decisão correta após decidir qual o melhor ambiente para a aplicação. Visualizando como ela trabalha, temos uma ideia de como grandes empresas como Google consegue manter uma alta disponibilidade dos seus serviços em nuvem. Se você acompanhou todos os posts relacionado à virtualização e achou interessante a abordagem, deixe o seu comentário aqui no post, compartilhe o conhecimento com um amigo próximo e fique ligado nos próximo posts. Até mais galera!

Compartilhar

Comentário(1)

  • Marcos Ramon Reply

    Nossaaaa! Esse foi um dos melhores posts que eu já li sobre esse assunto! Parabéns!!!

    17 de julho de 2017 at 13:55

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Cadastre seu email

Quero Receber Novidades, Ofertas e Vagas de empregos