Содержание

Домашняя лаборатория с NanoBSD, APU2 и Kubernetes на Raspberry Pi — 0

Домашняя лаборатория.

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

Diagram
Схема сети лаборатории

Основная идея — построить домашнюю лабораторию на устройствах с низким энергопотреблением и настроить/собрать все необходимые аппаратные и программные компоненты, чтобы потреблять и публиковать персональные сервисы в интернет и из интернета.

Примечание
APU2 ENV обозначает виртуальное окружение внутри встраиваемого устройства на базе FreeBSD Jails.


Оборудование.

МеткаУстройствоРоль
ISP Wireless routerISP defaultДоступ в интернет / проброс портов
APU2pcengines.chВнутренний маршрутизатор/МСЭ + виртуальные серверы
Virtual ServerFreeBSD JailВиртуальные серверы внутри APU2
NetGear POE+ switchProSAFE MS510TXPPКоммутатор + Power over Ethernet для узлов Raspberry Pi
RaspberryRaspberry Pi 5Узел Kubernetes (kubelet)


Виртуальные серверы

Внутренний маршрутизатор (APU2) работает под NanoBSD. NanoBSD — проект FreeBSD, который предоставляет образ FreeBSD для встраиваемых систем. Внутри NanoBSD можно создавать изолированные процессы (jails), которые ведут себя как независимые серверы, изолированные друг от друга и от базовой ОС. Для такой изоляции FreeBSD реализует ряд интересных технологий, в том числе виртуализацию сетевого стека (VNET), ограничения ресурсов (rctl) и другие.

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.
APU2
Материнская плата APU2

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

mSATA SSD
Твердотельный накопитель.
Примечание
К сожалению, на момент написания этой статьи pcengines прекратили разработку и производство плат APU2 (здесь их объявление и обоснование). Надеюсь, в обозримом будущем они снова удивят похожим или ещё лучшим решением.


Коммутатор 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+).
MS510TXPP
MS510TXPP

Raspberry Pi 5

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

rbp-5
Raspberry Pi 5


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

poe-hat
Power over Ethernet HAT

Стойка для Kubernetes

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

rack
Стойка GeeekPi

Итоговая сборка

Следующие шаги

  1. Установить образ NanoBSD.
  2. Установить Raspberry Pi OS на узлы Raspberry Pi.
  3. Создать кластер Kubernetes.