O que é Kubernetes em bare-metal
Kubernetes nasceu para orquestrar containers em clusters. A maioria dos tutoriais ensina usando serviços gerenciados como EKS, GKE ou AKS, onde você paga a nuvem para abstrair toda a complexidade. Mas o que acontece quando você quer entender como funciona de verdade, sem pagar conta de cloud?
Bare-metal Kubernetes significa rodar o cluster diretamente em máquinas físicas, sem camada de virtualização intermediaria. Você e responsável por tudo: provisionamento do SÓ, rede, storage, alta disponibilidade. E exatamente por isso que é a melhor escola possível para entender a fundo como o Kubernetes funciona.
O case que viralizou no Hacker News esta semana: um desenvolvedor montou um cluster funcional com hardware de segunda mao por menos de $200, usou Talos Linux como sistema operacional e documentou cada erro cometido. Três cartões SD queimados depois, o cluster esta rodando em produção real.
Como funciona o Talos Linux
Talos Linux e uma distribuição imutável projetada exclusivamente para rodar Kubernetes. Não tem bash, não tem SSH tradicional, não tem gerenciador de pacotes. A única forma de interagir com o sistema e via API gRPC através da ferramenta talosctl.
Essa imutabilidade tem uma consequência prática: o SÓ nunca diverge do estado declarado. Você define como o cluster deve estar em um arquivo YAML e o Talos garante que esteja assim. Atualizações são atómicas: ou funcionam completamente ou não se aplicam. Não ha estado intermediário corrompido.
A arquitetura elimina a superfície de ataque: sem shell de login, sem usuário root acessível por SSH, sem binários do sistema operacional que possam ser comprometidos. E muito mais seguro que um Ubuntu ou CentOS configurado manualmente para rodar Kubernetes.
O Talos tem suporte a Raspberry Pi 4 e outros SBCs ARM além de x86. Se você tem Raspberry Pi sobrando, pode começar com isso antes de investir em hardware mais pesado.
Hardware e custo real
O setup documentado no case usa hardware que qualquer um pode encontrar no Mercado Livre ou OLX:
- Control plane: 1 mini-PC usado com Intel N100 (4 cores, 16 GB RAM) - cerca de R$ 400-600 no Brasil.
- Worker nodes: 2 ou 3 mini-PCs similares ou Raspberry Pi 4 com 8 GB RAM.
- Switch de rede: qualquer switch gigabit de 5 ou 8 portas (R$ 80-150).
- Storage: SSD NVMe barato (128 GB e suficiente por node para começar) ou cartões SD de qualidade alta (A2 rating, não os básicos).
O total nos EUA ficou em torno de $200. No Brasil, considerando a taxa de conversão e a disponibilidade de segunda mao, o equivalente e entre R$ 800 e R$ 1.500 para um cluster de 3 nodes. Ainda muito mais barato que meses de EKS ou GKE.
Cartões SD de baixa qualidade (classe 10 genéricos) não aguentam a carga de leitura/escrita continua do etcd do Kubernetes. Use cartões com A2 Application Performance Class ou, de preferência, SSDs NVMe. Isso foi o principal causador dos 3 cartões queimados no case.
Como começar: instalação passo a passo
O processo com Talos e surpreendentemente simples comparado a instalar Ubuntu e configurar kubeadm manualmente.
# Instalar talosctl (Linux/Mac)
curl -sL https://talos.dev/install | sh
# Ou via Homebrew:
brew install siderolabs/tap/talosctl
# Verificar versão
talosctl versionPara iniciar o cluster, você usa o Talos ISO para dar boot nas máquinas. O ISO pode ser gravado em USB ou servido via PXE boot. Depois do boot, todas as interações são via API:
# Gerar configuração do cluster
talosctl gen config meu-cluster https://IP-DO-CONTROL-PLANE:6443
# Aplicar config no control plane (substitua o IP real)
talosctl apply-config --insecure --nodes IP-CONTROL-PLANE --file controlplane.yaml
# Aplicar config nos workers
talosctl apply-config --insecure --nodes IP-WORKER1 --file worker.yaml
# Bootstrap do cluster (só uma vez, no control plane)
talosctl bootstrap --nodes IP-CONTROL-PLANE
# Obter kubeconfig
talosctl kubeconfig --nodes IP-CONTROL-PLANEDepois disso, você tem um cluster Kubernetes funcional acessível via kubectl. O processo inteiro leva cerca de 15 a 30 minutos na primeira vez.
Exemplo prático: deploy de uma aplicação
Com o cluster funcionando, o workflow e idêntico a qualquer cluster Kubernetes gerenciado. Você usa os mesmos arquivos YAML, os mesmos comandos kubectl.
# Confirmar que o cluster esta saudável
kubectl get nodes
# Output esperado:
# NAME STATUS ROLES AGE
# control-0 Ready control-plane 5m
# worker-0 Ready <none> 3m
# worker-1 Ready <none> 3m
# Deploy de uma aplicação simples
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get services nginxPara storage persistente em bare-metal, o Longhorn e a opcao mais popular: e distribuído, usa o disco de cada node e sobrevive a falha de nodes individuais. Instalavel via Helm em minutos.
Use o Cilium como CNI (rede) em vez do Flannel padrão. O Cilium tem suporte a eBPF, oferece network policies mais poderosas e tem excelente integracação com o Talos. E a escolha de produção em vários homelabs sérios.
Comparação com alternativas
K3s (Rancher): distribuição Kubernetes minimalista projetada para edge e IoT. Muito mais simples de instalar que o Talos, roda em Ubuntu normal. Ideal para começar rápido, mas não tem a imutabilidade e segurança do Talos. Muito popular em homelabs brasileiros.
MicroK8s (Canonical): fácil de instalar em Ubuntu, bom suporte da Canonical. Adequado para desenvolvimento local, mas a comunidade de homelab prefere K3s ou Talos para produção.
Kubeadm com Ubuntu: o método tradicional. Você tem controle total mas e trabalho manual: configurar o SÓ, instalar kubeadm, kubelets, networking, certificados. Bom para aprender o que o Talos abstrai. Mais suscetível a drift de configuração ao longo do tempo.
Quando usar cada um: K3s para começar rápido e testar, Talos para homelab serio com foco em segurança e imutabilidade, kubeadm para aprender os internos do Kubernetes passo a passo.
Pontos positivos e limitações
Pontos positivos do Kubernetes em bare-metal:
- Zero custo de infra (além do hardware inicial).
- Você aprende como o Kubernetes funciona de verdade, incluindo networking, storage e troubleshooting.
- Pode rodar workloads reais: self-hosted Gitea, Nextcloud, apps próprios.
- Sem limites arbitrários de cloud (número de nodes, recursos, regras de rede).
Limitações reais:
- Alta disponibilidade real exige pelo menos 3 nodes no control plane e hardware redundante.
- Você e o suporte: quando falhar, não tem SLA de cloud para ajudar.
- Load balancer externo não e automático: precisa de MetalLB ou similar para expor serviços com IP fixo.
- Consumo de energia: mini-PCs consumem menos que servidores completos, mas ainda somam na conta de luz.
Casos de uso reais
Dev individual que quer aprender DevOps de verdade: subir EKS para aprender Kubernetes e caro e oculta a complexidade. Bare-metal expõe tudo: você configura networking, entende por que os pods não conseguem se comunicar, aprende a debugar certificados expirados.
Startup em estágio inicial: antes de ter budget para cloud, rodar a infraestrutura em hardware próprio (mesmo que barato) pode ser viável. Quando o produto validar, migrar para cloud gerenciado.
Laboratório de estudo para certificações: CKA, CKAD e CKS exigem conhecimento real de administração de cluster. Um homelab Kubernetes e a melhor preparação possível.
Self-hosting real: rodar seus próprios serviços (Git, CI/CD, monitoramento, banco de dados) com controle total sobre os dados e sem depender de SaaS.
Dicas e boas práticas
Comece com um cluster de 1 node (single-node Talos). E suficiente para aprender e experimentar sem precisar de hardware adicional. Adicione nodes quando quiser testar HA real.
Use Flux CD ou ArgoCD para GitOps desde o inicio. Assim todo o estado do cluster e declarativo e versionado no Git. Se o cluster morrer, você recria tudo aplicando o repositório.
O dashboard do Kubernetes nativo e básico. Use o Lens (grátis para uso pessoal) ou o k9s (terminal, muito rápido) para gerenciar o cluster visualmente. O k9s em particular e favorito de quem usa o cluster no dia a dia.
Não exponha o API server do Kubernetes diretamente na internet. Use VPN (WireGuard e popular para homelab) ou Cloudflare Tunnel para acesso remoto seguro. A superfície de ataque de um API server exposto e imensa.
Vale a pena?
Se o objetivo e aprender Kubernetes de verdade, sim. Você vai quebrar a cabeça, queimar cartão SD, reiniciar cluster do zero e sair do outro lado entendendo coisas que horas de estudo teórico não ensinam.
Se o objetivo e rodar workloads em produção sérios com SLA, cloud gerenciada ainda e a escolha certa para a maioria dos casos. Mas para laboratório, aprendizado e self-hosting pessoal, um homelab Kubernetes com hardware barato e uma das melhores inversões de tempo que um desenvolvedor pode fazer.
Comece com o K3s em um Raspberry Pi ou qualquer PC velho. Se gostar, evolua para Talos em hardware dedicado. O ecosistema Kubernetes recompensa quem investe tempo.
Comentários
Deixar um comentárioVocê precisa ter uma conta no DevLevelUp para comentar.