Laboratório caseiro com NanoBSD, APU2 e Kubernetes no Raspberry Pi - 0
Laboratório caseiro.
Há algum tempo eu vinha pensando em montar um laboratório caseiro (cluster Kubernetes) com acesso à internet e a partir dela, para pesquisar e praticar as tecnologias que me interessam, usando componentes de baixo consumo energético e o mais resistentes possível a quedas de energia (para evitar corrupção das unidades de armazenamento). Para isso, reaproveitei o hardware que comprei em algum momento simplesmente porque me interessou. Sem mais delongas, aqui está o diagrama de rede de como esse laboratório ficou:

A ideia principal é construir um laboratório caseiro com dispositivos de baixo consumo e configurar/montar todos os componentes de hardware e software necessários para consumir e expor serviços pessoais para a internet e a partir dela.
Hardware.
| Rótulo | Dispositivo | Função |
|---|---|---|
| ISP Wireless router | ISP default | Acesso à internet / port forwarding |
| APU2 | pcengines.ch | Roteador interno/firewall + servidores virtuais |
| Virtual Server | FreeBSD Jail | Servidores virtuais dentro do APU2 |
| NetGear POE+ switch | ProSAFE MS510TXPP | Switch + Power over Ethernet para nós Raspberry Pi |
| Raspberry | Raspberry Pi 5 | Nó Kubernetes (kubelet) |
Servidores virtuais
Você pode pensar nas FreeBSD Jails como o análogo dos containers Docker no Linux.
APU2
Para implementar o roteador/firewall interno, usei uma placa-mãe APU2 da pcengines. A principal característica desse dispositivo é que ele foi projetado como sistema embarcado: sem partes móveis como discos rígidos mecânicos, sem slots para encaixar módulos de RAM e com refrigeração passiva (não precisa de ventilador por ser de baixo consumo). Combinado com as vantagens do projeto NanoBSD, isso o torna ideal para essa montagem.
A placa-mãe APU2 inclui as seguintes características (entre outras):
- 1 processador AMD Embedded G series GX-412TC, 1 GHz quad Jaguar core with 64 bit 2MB L2 cache.
- 4 GB DRAM (soldada na placa).
- 1 slot m-SATA.
- 3 portas Gigabit Ethernet.

Como armazenamento, foi utilizada uma unidade de estado sólido mSATA semelhante à mostrada abaixo.

Switch NetGear
O switch utilizado é o ProSAFE MS510TXPP. Escolhi esse modelo principalmente por causa das capacidades PoE+ (Power over Ethernet), que permitem alimentar os dispositivos Raspberry Pi 5 pelo cabo de rede (é necessário adquirir um PoE HAT para as placas Raspberry Pi).
O switch possui as seguintes características:
Gerenciamento via página web com as seguintes capacidades:
- VLANs: Suporta até 256 VLANs baseadas em portas, IEEE 802.1Q, Auto Voice VLAN e Auto Video VLAN.
- Roteamento estático (Layer 3 Lite): Suporta até 32 rotas estáticas IPv4 e 32 rotas estáticas IPv6, além de uma tabela ARP de até 512 entradas.
- Agregação de enlaces / port trunking: Compatível com IEEE 802.3ad LACP (Link Aggregation Control Protocol).
- Quality of Service (QoS): Priorização de tráfego baseada em portas, IEEE 802.1p, DSCP, TCP/UDP e DiffServ com filas WRR (Weighted Round Robin) ou prioridade estrita.
- Monitoramento: SNMP v1, v2c e v3, RMON (grupos 1, 2, 3 e 9) e syslog remoto.
Configuração de portas (10 portas no total):
- Portas Gigabit padrão (1G): 4 portas RJ-45 (10M/100M/1G) com suporte PoE+.
- Portas Multi-Gigabit (2.5G): 2 portas RJ-45 (100M/1G/2.5G) com suporte PoE+ (IEEE 802.3bz / NBASE-T).
- Portas Multi-Gigabit (5G): 2 portas RJ-45 (100M/1G/2.5G/5G) com suporte PoE+ (IEEE 802.3bz / NBASE-T).
- Uplink de cobre 10G: 1 porta RJ-45 dedicada (100M/1G/2.5G/5G/10GBASE-T).
- Uplink de fibra 10G SFP+: 1 porta SFP+ dedicada (1G/10GBASE-X SFP+).

Raspberry Pi 5
Não há muito a dizer aqui: foram usadas quatro placas Raspberry Pi 5 para os nós Kubernetes. No momento em que este artigo foi escrito, a página oficial do Raspberry Pi oferece uma versão com 16 GB de RAM; os dispositivos usados aqui têm a metade disso, 8 GB de RAM.

Os cartões microSD são relativamente frágeis perante quedas de energia, por isso os nós Kubernetes receberam PoE HATs (Power over Ethernet) para dois objetivos: primeiro, substituir o microSD por um SSD m.2 mais resistente a cortes de energia; segundo, alimentar as placas Raspberry Pi pelo cabo de rede. Como já mencionado, o switch NetGear MS510TXPP é capaz de alimentar dispositivos de rede pela conexão Ethernet.

Rack para Kubernetes
Um problema ao montar um cluster Kubernetes com Raspberry Pi é a organização dos dispositivos — tanto os nós de computação quanto o roteador. A GeeekPi fabrica racks para Raspberry Pi e outros acessórios para organizar esse tipo de projeto. O mini-rack escolhido para este laboratório caseiro foi o modelo T0.

Setup final
Próximos passos
- Instalar a imagem NanoBSD.
- Instalar o Raspberry Pi OS nos nós Raspberry Pi.
- Criar o cluster Kubernetes.