Fala pessoal tudo bem ? Após um tempo estudando docker decidi aprofundar mais e estudar o Kubernetes para orquestar os meus containeres Docker. Porém me deparei com um problema…. DINHEIRO.

Apesar de existirem muitas opções de soluções Kubernetes em cloud, elas são bem salgadas, ainda mais se tratando de uso para estudo. Para resolver esse problema resolvi me aventurar na instalação do cluster Kubernetes do zero, logo, esse post vai mostrar o passo a passo que fiz pra criar o meu Kubernetes de estudo.


Nasce a minha Jornada Kubernetes

Porque apenas contar a minha experiência na instalação, se posso contar toda a minha jornada no aprendizado do Kubernetes ? Então decidi criar aqui no site uma série chamanda “Jornada Kubernetes” na qual vou compartilhar com vocês tudo que aprendi, estou aprendendo e aprenderei sobre o Kubernetes. Vamos lá que toda jornada começa com o primeiro passo.

AVISO IMPORTANTE: Esse post ficou um pouco maior que o desejado. Entretanto, achei importante explicar os conceitos por trás, para que além de montar o cluster, consigam entender os conceitos por trás.

Mas primeiro, um pouco de conceito

Antes de colocarmos a mão na massa, vamos entender um pouco sobre o que faremos.

O Kubernetes é o orquestrador de clusters de contêineres mais popular atualmente no mercado. O cluster Kubernetes é formado basicamente de 2 elementos:

  • A máquina Master que gerencia o cluster;
  • E as máquinas Nodes ou Nós que executam as aplicações

Com o andamento da nossa jornada entraremos mais na estrutura do Kubernetes. Por ora, é importante entender os componentes que iremos instalar: kubeadm, kubelet and kubectl

Kubeadm: Responsável por iniciar o Kubernetes.
Kubelet: Ele é executado em todos os nós no cluster e responsável por garantir que os pods e os contêineres estão sendo executados corretamente.
Kubectl: Responsável por interagir com o cluster.

Chega de explicação e vamos ao que interessa

Para começarmos segue os requisitos para criarmos o nosso Kubernetes:

  • Uma conta no Scaleway;
  • Um SSH client que preferencialmente execute comandos simultaneamente em mais de um terminal. Eu no caso estou utilizando o MobaXterm;

Um outro ponto importante é criar e adicionar uma chave SSH na sua conta, para poder acessar os servidores. Para isso, basta acessar o tutorial do próprio Scaleway.

Criando as maquinas no Scaleway

Finalizada a criação da conta no Scaleway, vamos criar as máquinas que formarão o nosso cluster. Logo vamos acessar o nosso dashboard. Em seguida, para criarmos a nossa primeira máquina, que será o nosso master, clique no botão “Create a Server”.

Dashboard do Scaleway

Com a tela de “Create a New Server” aberta, vamos configurar a nossa máquina. Segue abaixo as opções que escolhi e as imagens de referência:

  • OS Images: Ubuntu Bionic;
  • Region: PAR 1;
  • Server: START1-S;
  • Add Volumes: Mantive o padrão;
  • SSH Key: Mantive o padrão;
  • Nome da máquina: k8s-master

Concluída a criação da nossa máquina master, basta repetir o mesmo processo para criar as máquinas que serão os nodes. Para o meu caso criei com os nomes “k8s-node01” e “k8s-node02”.

Máquinas criadas para o Kubernetes

Executando a instalação

Concluída a criação das máquinas no Scaleway, vamos acessá-las e instalar nosso cluster.

Na documentação do MobaXterm é possível verificar como configurar as sessões de acesso e como executar os terminais em multiexecução, mas fique a vontade para utilizar outra ferramenta.

Os comandos a seguir devem ser executados em TODOS os 3 servidores.

Primeiramente, precisamos atualizar a lista de pacotes dos nossos servidores.

apt-get update

Agora vamos instalar o Docker.

curl -fsSL https://get.docker.com | bash

Após a instalação do docker precisamos importar a chave, adicionar o repositório do Kubernetes e finalizar atualizando novamente a lista de pacotes.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update

Finalmente, instalamos o kubelet, kubeadm e o kubectl nos servidores.

apt-get install -y kubelet kubeadm kubectl

Finalizada a instalação, é hora de eleger o servidor que terá o papel de master no nosso cluster e iniciá-lo.

kubeadm init --apiserver-advertise-address $(hostname -i)

No final ele vai exibir 2 procedimentos para configurar o nosso cluster. Primeiramente devemos executar os comandos abaixo:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Logo após, é exibido o comando para ser executando nas máquinas que farão parte do cluster, algo parecido com o comando abaixo:

kubeadm join <ENDEREÇO_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<TOKEN>

Agora precisamos instalar um pod network. O pod network é um add-on responsável por fornecer os recursos para que os nossos nós e pods. Existem algumas opções como por exmplo: Weave-Net, Calico e Flannel.

Escolhi como opção o Weave-Net, então vamos lá executar a instalação no nosso MASTER

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Feito isso, executaremos o comando “kubectl get nodes” e todos os nós estarão prontos.

Pra finalizar, vamos testar com um comando run (veremos mais sobre isso nos próximos posts) e depois listar os pods.

kubectl run nginx --image nginx --replicas 10
kubectl get pods -o wide

Você vai visualizar os seus pods sendo executados de forma distribuida entre os nossos 2 nós.

Com isso finalizamos a instalação no cluster Kubernetes, em breve postarei os próximos passo da nossa jornada.
Lembrando que no caso de duvidas ou sugestões é só entrar em contato. Até a próxima !

Referências:
https://www.linuxtips.com.br/blog/descomplicando-o-kubernetes-02
https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu
https://kubernetes.io/docs/home/