Kubernetes supera o Docker Swarm?
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:
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.