Для этого проекта сложно придумать вступление. Я захотел познакомиться с Kubernetes (kubernetes.io), но сразу решил, что minikube — не мой путь.
Поэтому я выбрал вариант из четырех Raspberry Pi 4 с 4Gb (на момент создания проекта 8Гб версия еще не была анонсирована). Их начинки вполне хватает чтобы разместить «взрослый» K8s.
Далее я захотел сделать систему охлаждения для Raspberry Pi, которую никто ранее не делал. А развивая тему у себя в голове и основываясь на доступных материалах пришел к этому:
Я не буду в этой статье останавливаться на программной части. Кластер был собран в конце 2019 года и сейчас процесс настройки намного проще.
Первые 3 месяца все работало вообще без дополнительного охлаждения, кластер уходил в троттлинг под нагрузкой, но впрочем работал.
Такая задержка связана с тем, что детали заказывались с Aliexpress и, к сожалению, не всегда картинка соответствовала реальному продукту. Самое сложно было найти подходящий радиатор. Я хотел медный с 4 отверстиями 6мм. Общение с продавцами ни к чему не приводило, т.к. им не очень интересно продавать 1-2 радиатора на заказ. А то, что было в наличии мне не подходило.
Поэтому опустил руки стал искать алюминиевые варианты и выбрал те, что вы видите в финальном продукте.
Другая сложность — это как гнуть термотрубки. Я знал, что это задача не из простых и заказал трубок с небольшим запасом. А перед тем как их гнуть напечатал шаблоны на 3д принтере, которые повторяли сложные изгибы трубки. Термотрубки довольно хрупкие, и я заказал также специальный инструмент, который впрочем имел слишком большой радиус изгиба и был применен лишь один раз для каждой трубки.
Следующим вопросом было то, как же прикрепить трубку к процессору. На том же Aliexpress купил наборы медных радиаторов и доработал их дремелем, чтобы трубка более-менее прилегала ко всем радиаторам и не мешала PoE шапке. PoE шапка кстати тоже нестандартная, ссылка на Амазон: DSLRKIT Raspberry Pi 3B+ 3B Plus Power Over Ethernet PoE HAT Выбор был обусловлен в первую очередь габаритами и «открытой» конструкцией.
Сначала я хотел использовать олово и припаять трубки к радиаторам, но в итоге решил, что оно того не стоит. Сложно, рискованно и к тому же будет очень сложно разобрать, если потребуется заменить Raspberry. Поэтому приобрел обычный теплопроводный клей, взял сразу 10 тюбиков, хотя хватило всего одного. Как показала практика даже пассивного охлаждения в итоге хватает для работы без перегрева. Для временной фиксации термотрубок использовал подручные предметы. Было бы забавно, если оказалось, что клей хрупкий или вязкий после высыхания, но к счастью он подошёл идеально.
Дальше я просто собрал все по той модели, что создал в Fusion 360.
Список использованых материалов:
- 4pcs. — Rapsberry Pi 4 (4Gb)
- 4pcs. — DSLRKIT Raspberry Pi 3B+ 3B Plus Power Over Ethernet PoE HAT
- 2pcs. — Aluminum heat sink (aliexpress.com)
- 4pcs. — Raspberry Pi 4 Model B Copper Heat Sink (aliexpress.com)
- 2pcs. — Heat pipe 6x240mm (aliexpress.com)
- 2pcs. — Heat pipe6x220mm (aliexpress.com)
- 1pcs. — Thermal Pad Heatsink (10pcs) (aliexpress.com)
- 1pcs. — Tube Bender (aliexpress.com)
- 1pcs. — Thermal Glue
- 1pcs. — Threaded Rod 2.5M
Статья была написана после этого поста на Reddit (ссылка), где очень многие попросили рассказать подробнее про этот проект.
На текущий момент кластер стоит у меня на столе и вот уже 9 месяцев работает и хостит мое самописное приложение, о котором я расскажу в другой статье.
Спасибо за внимание! Как всегда буду очень рад вашей подписке на мой инстаграм instagram.com/uptime.lab
Модели, как есть, доступны по ссылке:
Kubernetes Cluster Uptime Labs
P.S. Проект дался мне довольно тяжело, и я не могу сказать, что он завершен полностью. Самая первая модель предполагала наличие кинематики, т.е. мотора или сервопривода, который бы поднимал блок из 4х Rasbperry над свитчем, открывая доступ к USB-C и MicoHDMI разъемам. Свитч тоже был выбран не сразу, я проверил 3 разных бренда (спасибо 14 дневному возврату в Германии), т.к. хотел найти удобный и компактный вариант, который бы позволил мне выключать порты и следить за энергопотреблением. Также я хотел настроить схему, которая могла бы пробросить мой кластер на мое DNS имя из любой сети, где есть доступ в интернет. Свитч от Ubiquiti почти подошел по требованиям, но не вписывался по размерам и без дополнительных настроек все равно бы не позволил реализовать все задумки. В итоге решил выбрать самый простой вариант, который подходил по размерам. И не жалею.
Если вам нравится, можете также поддержать меня через PayPal:
Я системный инженер в компании JetBrains. Основатель Uptime Lab. Рад видеть вас у себя на сайте! Пожалуйста подписывайтесь на мой Инстаграм и Твиттер, я публикую там самые свежие обновления.
My RPi4 is running a single node k3s and I plan to add more nodes where your post comes very handy. Would you mind sharing the effect of your cooling design on the performance of your RPis i.e. your cluster?
btw, great work. also your Mark III looks amzing for a home-made cluster. Thanks.
Thank you very much!
It works without OC, with average 50 degrees temperature (low-middle load)
Mark II in server room with air condition (20 degrees) works under OC (2GHz if I’m not mistake) with about 60 degrees under very high load. But it’s 14 hodes in 2U with active ventilation.