Montando um Cluster Kubernetes com Raspberry Pi

Kubernetes é uma plataforma de código aberto que permite gerenciar, implantar e escalar aplicativos de contêiner em larga escala. Com a crescente popularidade dos contêineres, Kubernetes tornou-se uma ferramenta fundamental para gerenciar infraestruturas de aplicativos modernas.

Para quem deseja experimentar com Kubernetes em sua própria infraestrutura, montar um cluster usando Raspberry Pi pode ser uma ótima opção. Raspberry Pi é uma plataforma de hardware acessível e de baixo custo que pode ser usada para criar um cluster Kubernetes totalmente funcional.

Neste post, vamos passar pelos passos necessários para montar e usar um cluster Kubernetes usando Raspberry Pi.

O que você vai precisar:

  • 3 ou mais Raspberry Pi (modelo 3 ou superior)
  • MicroSD card (16GB ou mais) para cada Raspberry Pi
  • Fonte de alimentação para cada Raspberry Pi
  • Switch Ethernet
  • Cabos Ethernet
  • Computador com Linux (opcional)

Passo 1: Instale o sistema operacional Raspbian

O primeiro passo é instalar o sistema operacional Raspbian em cada Raspberry Pi. Raspbian é uma distribuição do Linux baseada em Debian e é a opção mais popular para Raspberry Pi.

Para instalar o Raspbian, você pode seguir o tutorial oficial do Raspberry Pi Foundation (https://www.raspberrypi.org/documentation/installation/installing-images/README.md). Certifique-se de instalar a versão “Raspbian Buster with desktop and recommended software” ou “Raspbian Buster Lite”.

Passo 2: Configure as opções de rede

Depois de instalar o Raspbian, você precisa configurar as opções de rede em cada Raspberry Pi. Você pode configurar o endereço IP estático ou usar o protocolo DHCP para atribuir endereços IP automaticamente.

Para configurar um endereço IP estático, edite o arquivo “/etc/dhcpcd.conf” e adicione as seguintes linhas:

interface eth0
static ip_address=<IP ADDRESS>
static routers=<GATEWAY IP ADDRESS>
static domain_name_servers=<DNS IP ADDRESS>

Substitua <IP ADDRESS>, <GATEWAY IP ADDRESS> e <DNS IP ADDRESS> pelos valores apropriados para sua rede.

Para usar o protocolo DHCP, verifique se o arquivo “/etc/network/interfaces” contém as seguintes linhas:

auto eth0
iface eth0 inet dhcp

Passo 3: Instale o Docker

Para executar aplicativos em contêiner em Raspberry Pi, você precisa instalar o Docker. O Docker é uma plataforma de software que permite empacotar e distribuir aplicativos em contêiner.

Para instalar o Docker, execute os seguintes comandos:

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl enable docker
sudo systemctl start docker

Passo 4: Instale o kubeadm e o Kubernetes

Agora é hora de instalar o kubeadm e o Kubernetes. Kubeadm é uma ferramenta que automatiza a instalação do Kubernetes. Você pode usá-lo para configurar um cluster Kubernetes com facilidade.

Para instalar o kubeadm e o Kubernetes, execute os seguintes comandos:

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

Em seguida, adicione o repositório do Kubernetes ao sistema:

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

Depois, atualize o sistema e instale o Kubernetes:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

Passo 5: Crie o cluster Kubernetes

Agora que o kubeadm e o Kubernetes estão instalados em cada Raspberry Pi, você pode começar a criar o cluster.

A primeira coisa a fazer é escolher um nó mestre. O nó mestre é responsável por controlar o cluster e armazenar as configurações. Você pode escolher qualquer Raspberry Pi como nó mestre, mas é recomendado escolher o mais poderoso em termos de hardware.

No nó mestre, execute o seguinte comando para iniciar o cluster:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

O argumento “–pod-network-cidr” define a faixa de IP para os pods.

Depois que o comando for executado, ele exibirá um comando de configuração que você precisará executar nos outros nós para se juntar ao cluster. O comando terá a seguinte aparência:

sudo kubeadm join <MASTER NODE IP>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

Substitua <MASTER NODE IP> pelo endereço IP do nó mestre e <PORT> pela porta usada pelo Kubernetes (geralmente 6443). O <TOKEN> e <HASH> serão gerados pelo kubeadm durante o processo de inicialização.

Agora, em cada nó de trabalho, execute o comando de configuração gerado pelo kubeadm. Isso fará com que o nó se junte ao cluster.

Passo 6: Configure a rede

Agora que o cluster Kubernetes está configurado, você precisa configurar a rede para permitir que os pods se comuniquem uns com os outros.

Existem várias opções de rede disponíveis para Kubernetes, mas uma das mais populares é o “Flannel”. Flannel é uma rede sobreposição que permite que os pods se comuniquem em redes diferentes.

Para instalar o Flannel, execute o seguinte comando no nó mestre:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Passo 7: Use o cluster

Agora que o cluster Kubernetes está configurado, você pode começar a usá-lo.

Para verificar se os nós estão conectados e prontos, execute o seguinte comando:

kubectl get nodes

Isso deve exibir uma lista de todos os nós no cluster.

Para implantar um aplicativo em contêiner, você precisa criar um arquivo de manifesto YAML. O manifesto YAML contém as especificações do pod e do serviço.

Aqui está um exemplo de um arquivo de manifesto YAML para um aplicativo “Hello World”:

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  - name: hello-world
    image: hello-world
---
apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80


Este arquivo de manifesto YAML define um pod com um contêiner chamado “hello-world” que usa a imagem “hello-world”. Também define um serviço que expõe o pod na porta 80. Para implantar o aplicativo, execute o seguinte comando:

kubectl apply -f <NOME DO ARQUIVO DE MANIFESTO YAML>
Substitua `<NOME DO ARQUIVO DE MANIFESTO YAML>` pelo nome do arquivo de manifesto YAML que você criou.

Isso deve implantar o aplicativo no cluster. Você pode verificar o status do aplicativo executando o seguinte comando:

kubectl get pods

Isso deve exibir uma lista de todos os pods no cluster. Verifique se o pod “hello-world” está em estado “Running”.

Você pode acessar o aplicativo abrindo um navegador da web e digitando o endereço IP do nó mestre seguido da porta 80 (por exemplo, http://:80).

Conclusão

Montar e usar um cluster Kubernetes em Raspberry Pi pode ser uma tarefa desafiadora, mas é uma ótima maneira de aprender mais sobre o Kubernetes e a computação distribuída.

Neste tutorial, você aprendeu como instalar o Kubernetes em cada Raspberry Pi, criar um cluster e implantar um aplicativo em contêiner. Além disso, você aprendeu como configurar a rede para permitir a comunicação entre os pods.

Se você estiver interessado em aprender mais sobre o Kubernetes, há muitos recursos disponíveis online. A documentação oficial do Kubernetes é um ótimo lugar para começar, assim como os diversos cursos e tutoriais disponíveis em plataformas de ensino online.

Esperamos que este tutorial tenha sido útil para você e que tenha ajudado a montar seu próprio cluster Kubernetes usando Raspberry Pi.