Olá pessoal,

Hoje vamos iniciar uma série de posts demonstrado como podemos utilizar o Kubernetes como ferramenta de automatização, distribuição de carga, monitoramento e orquestração entre containers.

Kubernetes é um sistema de código aberto que foi desenvolvido pelo Google para gerenciamento de aplicativos em containers através de múltiplos hosts de um cluster. Tem como principal objetivo facilitar a implantação de aplicativos baseados em microservices. Ele foi baseado na experiência do Google de muitos anos trabalho com containers, adaptando o  para se trabalhar com Docker.

O Kubernetes foi muito útil para ser utilizado até o Docker Swarm 1.0, pois disponibilizava muitos recursos que o Docker não disponibilizava até aquele momento, entre eles: Balanceamento de carga e movimento de containers sem perda de dados.

A principal vantagem que se tem ao utilizar o Kubernetes é que você não está preso as limitações da API do Docker (O Problema do Swarm) você tem total liberdade já que o Kubernetes não foi desenvolvido especialmente para o Docker, você pode trocar a sua estrutura de Docker para Rockets (Containers no CoreOS). Você pode escolher a simplicidade do Swarm ou o poder do Kubernetes.

Dentro do Kubernetes possuímos alguns termos para determinadas funções:

Minions: É o nome dado para cada host do cluster.

Kubelet: Agente que roda nos hosts do cluster.

Pods: É a menor unidade dentro de um cluster, nada mais é do que containers rodando dentro de seu cluster de Kubernetes. Pode ser um container rodando nginx, php, apache, etc…

Replication Controller: É o responsável por manter um número determinado de pods em execução. No RC é onde você diz quantos containers de nginx, php, apache você desejá que fiquem rodando, caso um caia, o RC cria outra instância automaticamente.

Services: É o responsável por atrelar uma faixa de IP para um determinado RC. Para que cada vez que o RC crie uma nova instância de pod o mesmo inicie com um IP determinado pelo service.

Namespace: Com o namespace você pode dividir seu Cluster de Kubernetes em dois ambientes, Produção e Teste, podendo limitar os recursos computacionais para ambos.

No proximo post vamos mostrar como podemos instalar e configurar o kubernetes para que você use em seu ambiente da melhor maneira possível.

Trabalha em uma Startup com foco em Plataforma como Serviço (PaaS), é especialista em Cloud Computing e Conteinerização, desenvolve todo dia uma nova maneira de resolver problemas e criar coisas novas.
  • Pingback: Kubernetes: o que é - Linux AjudaLinux Ajuda()

  • Luis Claudio

    Pessoal, fica aqui uma dúvida: qual a vantagem de usar o Kubernetes e não o Docker Swarm? Até onde eu sei, configuração e gerenciamento de um cluster Swarm é bem mais simples e eficiente em relação a um cluster Kubernetes. Além disso, o Swarm é nativamente integrado ao ecossistema Docker. Então, qual a vantagem do Kubernetes?

  • Olá Luis,

    A configuração do Docker Swarm é muito simples realmente se comparado ao Kubernetes. No Kubernetes temos algumas soluções que ainda não existe no Docker Swarm, por exemplo:

    – Replication Controller (Você pode criar 10 servidores de Nginx por exemplo e dizer que você quer que sempre tenha 10 então quando algum cair por qualquer problema o Kubernetes automaticamente sobe outro container com Nginx e o administrador não precisa fazer nada.

    – É possivel também que quando seus servidores Web estejam usando 70% da capacidade de CPU o Kubernetes crie outro container Web, para que possa diminuir a carga. Tudo isso automaticamente.

    – É possivel criar um namespace de teste e outro namespace de produção, então você pode criar 2 ambientes isolados, limitando os recursos de cada ambiente, para que um não interfira no outra.

    Essas são algumas das principais funcionalidades do Kubernetes na qual o Docker Swarm ainda não possui.

  • Pingback: OpenShift e o Desafio dos Containers | UOLDIVEO()