Домашняя лаборатория с NanoBSD, APU2 и Kubernetes на Raspberry Pi — 0
Домашняя лаборатория.
Уже некоторое время я думал о создании домашней лаборатории (кластер Kubernetes) с доступом в интернет и из интернета, чтобы исследовать и практиковать интересные мне технологии, используя энергоэффективные компоненты, максимально устойчивые к отключениям питания (чтобы избежать повреждения накопителей). Для этого я задействовал оборудование, которое когда-то купил просто потому, что оно меня заинтересовало. Без лишних слов — вот схема сети, как в итоге выглядит эта лаборатория:

Основная идея — построить домашнюю лабораторию на устройствах с низким энергопотреблением и настроить/собрать все необходимые аппаратные и программные компоненты, чтобы потреблять и публиковать персональные сервисы в интернет и из интернета.
Оборудование.
| Метка | Устройство | Роль |
|---|---|---|
| ISP Wireless router | ISP default | Доступ в интернет / проброс портов |
| APU2 | pcengines.ch | Внутренний маршрутизатор/МСЭ + виртуальные серверы |
| Virtual Server | FreeBSD Jail | Виртуальные серверы внутри APU2 |
| NetGear POE+ switch | ProSAFE MS510TXPP | Коммутатор + Power over Ethernet для узлов Raspberry Pi |
| Raspberry | Raspberry Pi 5 | Узел Kubernetes (kubelet) |
Виртуальные серверы
FreeBSD Jails можно считать аналогом контейнеров Docker в Linux.
APU2
Для внутреннего маршрутизатора/МСЭ я использовал материнскую плату APU2 от pcengines. Главная особенность устройства — оно рассчитано как встраиваемая система: без подвижных частей вроде механических жёстких дисков, без слотов для модулей RAM и с пассивным охлаждением (вентилятор не нужен из‑за низкого энергопотребления). В сочетании с преимуществами проекта NanoBSD это делает плату удобной для такой сборки.
Материнская плата APU2 имеет следующие характеристики (среди прочих):
- 1 процессор AMD Embedded G series GX-412TC, 1 GHz quad Jaguar core with 64 bit 2MB L2 cache.
- 4 GB DRAM (распаяна на плате).
- 1 слот m-SATA.
- 3 порта Gigabit Ethernet.

В качестве накопителя использовался твердотельный диск mSATA, похожий на показанный ниже.

Коммутатор NetGear
Используется коммутатор ProSAFE MS510TXPP. Я выбрал эту модель в первую очередь из‑за поддержки PoE+ (Power over Ethernet), что позволяет питать устройства Raspberry Pi 5 по сетевому кабелю (для плат Raspberry Pi нужно приобрести PoE HAT).
Коммутатор имеет следующие возможности:
Веб-управление со следующими функциями:
- VLANs: до 256 VLAN на основе портов, IEEE 802.1Q, Auto Voice VLAN и Auto Video VLAN.
- Статическая маршрутизация (Layer 3 Lite): до 32 статических маршрутов IPv4 и 32 IPv6, а также таблица ARP до 512 записей.
- Агрегация каналов / port trunking: совместимость с IEEE 802.3ad LACP (Link Aggregation Control Protocol).
- Quality of Service (QoS): приоритизация трафика по портам, IEEE 802.1p, DSCP, TCP/UDP и DiffServ с очередями WRR (Weighted Round Robin) или строгим приоритетом.
- Мониторинг: SNMP v1, v2c и v3, RMON (группы 1, 2, 3 и 9) и удалённый syslog.
Конфигурация портов (всего 10 портов):
- Стандартные Gigabit (1G): 4 порта RJ-45 (10M/100M/1G) с поддержкой PoE+.
- Multi-Gigabit (2.5G): 2 порта RJ-45 (100M/1G/2.5G) с PoE+ (IEEE 802.3bz / NBASE-T).
- Multi-Gigabit (5G): 2 порта RJ-45 (100M/1G/2.5G/5G) с PoE+ (IEEE 802.3bz / NBASE-T).
- Медный uplink 10G: 1 выделенный порт RJ-45 (100M/1G/2.5G/5G/10GBASE-T).
- Оптоволоконный uplink 10G SFP+: 1 выделенный порт SFP+ (1G/10GBASE-X SFP+).

Raspberry Pi 5
Здесь немногое: для узлов Kubernetes использовались четыре платы Raspberry Pi 5. На момент написания статьи на официальной странице Raspberry Pi предлагается версия с 16 GB RAM; у используемых устройств половина этого объёма — 8 GB RAM.

Карты microSD относительно чувствительны к отключениям питания, поэтому узлы Kubernetes оснащены PoE HAT (Power over Ethernet) для двух целей: во‑первых, заменить microSD на твердотельный накопитель m.2, более устойчивый к сбоям питания; во‑вторых, питать платы Raspberry Pi по сетевому кабелю. Как уже отмечалось, коммутатор NetGear MS510TXPP способен питать сетевые устройства через Ethernet.

Стойка для Kubernetes
Одна из сложностей кластера Kubernetes на Raspberry Pi — организация устройств: и вычислительных узлов, и маршрутизатора. GeeekPi выпускает стойки для Raspberry Pi и другие аксессуары для таких проектов. Для этой домашней лаборатории выбран мини‑rack модели T0.

Итоговая сборка
Следующие шаги
- Установить образ NanoBSD.
- Установить Raspberry Pi OS на узлы Raspberry Pi.
- Создать кластер Kubernetes.