Skip to content

Instantly share code, notes, and snippets.

@ronaldomendes
Last active September 4, 2023 01:09
Show Gist options
  • Save ronaldomendes/924159fb51da72529441538615cb0a7e to your computer and use it in GitHub Desktop.
Save ronaldomendes/924159fb51da72529441538615cb0a7e to your computer and use it in GitHub Desktop.
Tutorial para a instalação do K3s

Tutorial K3s

Manual para auxiliar na configuração de clusters utilizando RaspberryPi e/ou OrangePi.


Fixando o ip de todas as máquinas:

  • No Rasbperry (Desktop), edite o arquivo /etc/dhcpcd.conf conforme o exemplo abaixo:
# fallback to static profile on eth0
interface eth0
static ip_address=192.168.0.10
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
fallback static_eth0
  • No Raspberry (Server), edite os seguintes arquivos:

    • No arquivo /boot/cmdline.txt, adicione as seguintes informações ao final da linha cgroup_memory=1 cgroup_enable=memory ip=ip_address::default_gateway:subnet_mask:seu_hostname:eth0:off. Ao término da edição, as informações editadas devem ficar da seguinte forma: cgroup_memory=1 cgroup_enable=memory ip=192.168.0.10::192.168.0.1:255.255.255.0:node-pi:eth0:off
    • No arquivo /boot/config.txt, adicione a informação arm_64bit=1 ao final do arquivo
    • Crie um arquivo em branco ssh na pasta boot
    • Como administrador, aplique o comando sudo iptables -F e reinicie em seguida
  • No OrangePi (Ubuntu Desktop/Server), edite o arquivo /etc/network/interfaces conforme o exemplo abaixo:

#Static Ip Address
auto eth0
iface eth0 inet static
address 192.168.0.30
netmask 255.255.255.0
gateway 192.168.0.1

Alterando os hostnames de cada máquina:

  • No Raspberry é possível alterar através do Raspberry Pi Imager durante o processo de criação da imagem
  • No OrangePi, utilize o comando hostname nome_desejado e em seguida, acesse o arquivo em /etc/hostname e substitua pelo mesmo nome informado no comando anterior

Configurando um server:

  • Realize a instalação com o comando: curl -sfL https://get.k3s.io | sh -
    • Caso opte por não adicionar o traefik na instalação, utilize o comando: curl -sfL https://get.k3s.io | sh -s - --disable=traefik
  • Após a instalação, aguarde cerca de 30 segundos e utilize o comando: kubectl get nodes
  • Para verificar todos os pods disponíveis: kubectl get pods --all-namespaces
  • Para listar todas as informações disponíveis: kubectl get all --all-namespaces
  • Para obter o token do server, digite o comando: cat /var/lib/rancher/k3s/server/node-token

Configurando um worker:

  • Obtenha o ip do server com o comando: ifconfig
  • Realize a instalação com o comando: curl -sfL https://get.k3s.io | K3S_URL=https://server_ip:6443 K3S_TOKEN=server_token sh -
  • No server, utilize o comando a seguir para visualizar a atualização dos pods: watch -n 1 kubectl get nodes
  • Importante: Caso queira configurar um worker no Raspberry, será necessário incluir as informações cgroup_memory=1 cgroup_enable=memory no arquivo /boot/cmdline.txt

Desinstalando um server:

  • Em um server, utilize o comando: /usr/local/bin/k3s-uninstall.sh

Desinstalando um worker:

  • Em cada worker, utilize o comando: /usr/local/bin/k3s-agent-uninstall.sh

Opcional - Adicionando a imagem do NGINX:

Realizar os comandos em um server

  • Digite o comando a seguir para adicionar a imagem do NGINX: kubectl create deployment nginx --image=nginx
  • Para visualizar o deployment, digite o comando: kubectl get deploy
  • Expor o serviço do NGINX, com o comando: kubectl create service nodeport nginx --tcp 80:80
    • Obs: o NodePort serve para fixar a porta para cada pod, no caso a porta 80
  • Para escalar a quantidade de pods, subindo o número atual, digite o comando: kubectl scale deployment --replicas=100 nginx
  • Após escalar o número, visualize a evolução dos pods, digite: watch -n 1 kubectl get deployments.apps nginx
  • Para verificar a porta reservada para o Nginx, digite: kubectl get svc nginx

Realizar os comandos em um worker

  • Para visualizar os containers em execução, digite: crictl ps
  • Para visualizar a quantidade de pods, digite: watch -n 1 "crictl ps | grep Running | wc -l"

Opcional - Adicionando o OpenLens Dashboard

  • Faça o download do OpenLens para o sistema operacional desejado e instale normalmente
  • Após realizar a instalação do OpenLens, selecione a opção Add Cluster
  • Acesse remotamente o server e em seguida digite o comando: kubectl config view --minify --raw
  • Copie os dados que foram exibidos no terminal do server e cole no OpenLens
  • Altere o IP 127.0.0.1:6443 para o IP do servidor onde o K3s foi instalado

Solucionando problemas

  • Caso seja necessário parar o server, use o comando: /usr/local/bin/k3s-killall.sh
  • Para reiniciar o server: sudo systemctl restart k3s
  • Para reiniciar o agent: sudo systemctl restart k3s-agent

Referências:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment