Kubernetes supera o Docker Swarm?

Carlos Ribeiro
Quick Mobile Labs
Published in
3 min readSep 28, 2016

Primeiro o que é Kubernetes?

Funciona como o Docker e seus containers, processos de deploy e escala de aplicações. Mas existem algumas diferenças:

  • Chamamos um grupo de containers de Pods.
  • O Kubernetes não orquestra o sistema do seu projeto. Tenha em mente que orquestrar um sistema é parecido com:

Faça ação A, então ação B, depois C.

  • É quase uma coreografia, que significa:

Não importa o que você vai fazer da ação A para chegar na C.

  • Tem um painel confortável, onde você pode visualizar seus containers/pods em clusters:
http://kubernetes.io/images/docs/ui-dashboard-workloadview.png

O Kubernetes foi iniciado pela Google e o nome origina-se da Grécia, que significa “marinheiro” ou “piloto” e a palavra é a raiz de “governar” e “cybernético”. Mas existe uma abreviação: K8s. Yay! (substitue as 8 letras de “ubernete” com o número 8).

Então vamos começar…

Existem diferenças entre o Docker Swarm e o K8s?

Sim! E talvez sejam as funcionalidades que faltam no Docker Swarm, por enquanto.

  • Replication Controller: permite criar até 10 servidores Nginx, por exemplo, e dizer ao Kubernetes que você sempre quer que essa quantidade esteja executando e mesmo se um container Nginx falhe, caia, exploda, disapareça misteriosamente por qualquer razão, o Kubernetes automaticamente traz outro container Nginx. Você não precisa fazer nada manualmente.
  • Quando você atinge, por exemplo, 70% do uso de CPU, o Kubernetes cria outro container Web para balancear ou diminuir aquele uso, também automaticamente.
  • É possível representar mais de um namespace indicando, por exemplo, dois ambientes distintos, um para testes e outro para produção, dizendo que os recursos de cada um não gerem interferência.

Para testar essas diferenças você pode rodar o Minikube como uma máquina local de Kubernetes. O Minikube exige que as configurações de virtualização VT-x/AMD-V estejam habilitadas na BIOS de toda pltaforma.

Para conferir se está habilitado no Linux, execute o comando:

$ cat /proc/cpuinfo | grep ‘vmx\|svm’

Se você já tiver a virtualização habilitada, uma resposta irá aparecer.

Para instalar o Minikube você tem que fazer um download através do seguinte link:

Versão mais recente do Minikube

Você vai precisar também de um tipo de componente do K8s para executar localmente. Aqui vamos nós:

# linux/amd64
$ curl -Lo kubectl
http://storage.googleapis.com/kubernetes-release/release/v1.3.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

Neste ponto nós podemos iniciar o trabalho.

Execute o comando:

minikube start

Esse comando vai criar um cluster local de Kubernetes. Para visualizar a dashboard é só executar:

minikube dashboard

E se você quiser ver se seus clusters estão realmente lá, execute o seguinte:

kubectl get nodes

Com todos esses passos realizados, podemos testar se as vantagens em cima do Docker Swarm são de fato boas o suficiente.

Para criar um Replication Controller, crie um arquivo de configuração no formato YAML ou JSON. Para isso, execute o seguinte:

kubectl create -f <FILE_NAME>

Substitua <FILE_NAME> por qualquer nome que queira.

Uma mostra de arquivo tem os seguintes campos como exemplo:

Para visualizar seus controles de replicação ou seus detalhes, você pode executar, respectivamente:

$ kubectl get rc

$ kubectl describe rc nginx

Tenha em mente que com os ambientes dinstintos e o uso de CPU, podemos também determinar o uso de memória. Você pode configurar o seguinte comando por si mesmo:

$ kubectl run nginx \
— image=nginx \
— replicas=10 \
— requests=cpu=100m,memory=256Mi \
— limits=cpu=200m,memory=512Mi \
— namespace=quota-example

E quando terminar, suas réplicas estarão prontas para criar seus próprios pods:

$ kubectl get pods — namespace=quota-example

$ kubectl describe quota — namespace=quota-example

Veja mais: http://kubernetes.io/docs/

Se tudo ocorreu bem, agora você pode responder o título desse artigo.

Espero que esses pequenos exemplos tenham mostrado algo a mais sobre containers em relação as grandes possibilidades que podem ser feitas com eles hoje em dia.

--

--