Talos Linux com Docker - Subindo um cluster local

Salve salve pessoal!!!
Tudo bem com vocês? Espero que sim!
Esse é o segundo post da série sobre Talos Linux. Se você ainda não leu o primeiro, recomendo dar uma olhada no post Talos Linux: o OS minimalista e sem SSH para o Kubernetes antes de continuar — lá explico a filosofia e os conceitos por trás do projeto.
Hoje vamos colocar a mão na massa! O objetivo é subir um cluster Talos Linux localmente usando Docker, do zero até o cluster funcionando. Bora lá?
O que vamos construir
Um cluster Kubernetes com Talos Linux rodando em containers Docker, com a seguinte topologia:
- 1 control plane node
- 2 worker nodes
O Docker provider do Talos suporta apenas 1 control plane. Para clusters HA com múltiplos control planes, veremos nos próximos posts com VirtualBox e Proxmox.
Tudo gerenciado via talosctl, sem SSH, sem shell — exatamente como o Talos foi projetado para funcionar.
Pré-requisitos
Antes de começar, você precisa ter instalado na sua máquina:
- Docker — rodando e acessível
- kubectl — para interagir com o cluster Kubernetes
- talosctl — a CLI do Talos Linux
Carregando o módulo br_netfilter
O Flannel (CNI padrão do Talos) depende do módulo br_netfilter do kernel do host. Sem ele, os pods do Flannel ficam em CrashLoopBackOff e o cluster não funciona corretamente.
Antes de criar o cluster, carregue o módulo no host:
sudo modprobe br_netfilterNota: Esse comando precisa ser executado toda vez que o host reiniciar. Para tornar permanente, adicione
br_netfilterao arquivo/etc/modules-load.d/br_netfilter.conf.
Instalando o talosctl
Via script (Linux/macOS/WSL):
curl -sL https://talos.dev/install | shVia Homebrew (macOS/Linux):
brew install siderolabs/tap/talosctlDownload manual:
Acesse a página de releases do Talos no GitHub e baixe o binário para sua arquitetura. Após o download, adicione ao seu $PATH:
chmod +x talosctl
sudo mv talosctl /usr/local/bin/Verifique a instalação:
talosctl version --clientDica importante: A versão do
talosctldeve ser compatível com a versão do Talos Linux que você vai rodar no cluster. Sempre use versões correspondentes.
Instalando o kubectl
Se ainda não tiver o kubectl instalado:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/Subindo o cluster
Com o talosctl instalado, subir o cluster com Docker é surpreendentemente simples. Execute o comando abaixo:
talosctl cluster create docker \
--workers 2 \
--name talos-labO talosctl vai:
- Baixar a imagem do Talos Linux para Docker
- Criar os containers dos nodes (3 control planes + 2 workers)
- Gerar as configurações de máquina automaticamente
- Fazer o bootstrap do cluster etcd
- Inicializar os componentes do Kubernetes
Aguarde alguns minutos enquanto o cluster sobe. Você pode acompanhar o progresso diretamente no terminal.
Verificando o cluster
Verificando os nodes com talosctl
Aqui começa a parte interessante. Diferente de qualquer outra distro Linux, você não usa SSH para verificar o estado dos nodes — você usa a API do Talos via talosctl.
Liste os membros do cluster:
talosctl get members --nodes 10.5.0.2A saída esperada mostra os três nodes com seus IPs e papéis:
NODE NAMESPACE TYPE ID VERSION HOSTNAME MACHINE TYPE OS ADDRESSES
10.5.0.2 cluster Member talos-lab-controlplane-1 1 talos-lab-controlplane-1 controlplane Talos (v1.12.6) ["10.5.0.2"]
10.5.0.2 cluster Member talos-lab-worker-1 1 talos-lab-worker-1 worker Talos (v1.12.6) ["10.5.0.3"]
10.5.0.2 cluster Member talos-lab-worker-2 1 talos-lab-worker-2 worker Talos (v1.12.6) ["10.5.0.4"]Verifique os serviços rodando em um node:
talosctl services --nodes 10.5.0.2Acesse o dashboard interativo do Talos (um dos recursos mais legais do projeto):
talosctl dashboard --nodes 10.5.0.2O dashboard mostra em tempo real: CPU, memória, disco, serviços ativos e logs do sistema — tudo sem precisar de SSH.
Verificando os nodes com kubectl
Obtenha o kubeconfig do cluster:
talosctl kubeconfig --nodes 10.5.0.2Agora verifique os nodes Kubernetes:
kubectl get nodesA saída esperada é algo como:
NAME STATUS ROLES AGE VERSION
talos-lab-controlplane-1 Ready control-plane 5m v1.32.0
talos-lab-worker-1 Ready <none> 4m v1.32.0
talos-lab-worker-2 Ready <none> 4m v1.32.0Verifique os pods do sistema:
kubectl get pods -AExplorando o Talos na prática
Tentando acessar via SSH
Uma das demonstrações mais impactantes do Talos é mostrar o que não existe. Tente acessar um node via SSH:
ssh root@10.5.0.2Resultado esperado: conexão recusada. Não existe daemon SSH no Talos. Essa é a proposta — toda interação acontece via API.
Verificando os logs do sistema
talosctl logs --nodes 10.5.0.2 machinedInspecionando a configuração do node
talosctl get machineconfig --nodes 10.5.0.2Verificando as partições do disco
talosctl get disks --nodes 10.5.0.2Repare nas partições que o Talos cria: EFI, BIOS, BOOT, META, STATE e EPHEMERAL — exatamente a arquitetura que discutimos no post anterior.
Subindo um workload de exemplo
Com o cluster funcionando, vamos subir um Nginx para validar que tudo está ok:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=ClusterIP
kubectl get podsVerifique se o pod subiu com sucesso:
kubectl get pods -l app=nginxDestruindo o cluster
Quando terminar o lab, remova tudo com:
talosctl cluster destroy --name talos-labEsse comando remove todos os containers e limpa as configurações geradas.
O que aprendemos nesse lab
- Como instalar o
talosctl - Como subir um cluster Talos com Docker em um único comando
- Como interagir com o cluster via API, sem SSH e sem shell
- Como usar o
talosctl dashboardpara monitorar os nodes - Como obter o kubeconfig e usar o
kubectlnormalmente
Próximos passos
Nos próximos posts da série vamos evoluir o ambiente:
- Talos Linux com VirtualBox — subindo o cluster em VMs locais, mais próximo de um ambiente real
- Talos Linux com Proxmox — ambiente de homelab completo com HA real
Se quiser se aprofundar, a documentação oficial está em docs.siderolabs.com.
Qualquer dúvida, me chama nas redes sociais. Bora pra cima! 🚀