Советы по запуску кластера Kubernetes на Raspberry Pi

Автор оригинала: Lukasz Raczylo
  • Перевод

Этот небольшой пост — продолжение статьи о создании кластера Kubernetes на Raspberry Pi, где приводится описание полностью автоматизированной сборки с кодом. Хабравчан сложно удивить, но автор рассказывает о том, чего, как он надеется, вы не знали или о чём не задумывались до сегодняшнего дня. Пост приурочен к старту нового потока нашего курса по DevOps.


Контроль температуры

Как и любое вычислительное устройство, одноплатный компьютер Raspberry Pi может перегреваться — чем больше нагрузка на него, тем активнее он вырабатывает тепло. В комплект поставки Raspberry Pi входит только сама плата и ничего больше. 

Я поступил так: обложил плату радиаторами, и на первых порах меня это выручало. Радиаторы работали довольно сносно, но лишь до тех пор, пока я не решил опробовать на кластере чуть более тяжёлые приложения.

После небольшого исследования я нашёл специализированный вентилятор Fan SHIM Pimoroni для Raspberry Pi. Этот вентилятор идеально подходит для моей кластерной структуры и не требует установки дополнительных разделителей, увеличивающих высоту платы Pi. Для управления работой вентиляторов можно воспользоваться кодом из моей предыдущей статьи, изменив его так, чтобы он соответствовал целям управления.

Вентиляторы работают отлично, особенно в связке с радиаторами. Я был так ими доволен, что вначале даже не обратил внимания на их светодиодную индикацию. Тепло идёт вверх, поэтому нижняя часть платы Pi в объединённой конструкции подогревает верхнюю.

После того как я разместил платы горизонтально (я сделал только это, ничего больше), температура упала на 10 градусов (!).

Хранение данных и долговечность

Запуск Raspberry Pi с карты памяти по определению может вызвать проблемы. К счастью, почти за весь год, пока у меня на Raspberry Pi работал Kubernetes, я не испытывал никаких проблем; но возникали случаи, когда при определённых настройках конфигурации скорость записи на основной плате падала до 30 кбит/с, а на рабочих платах — до 5 кбит/с.

В качестве хранилища я использую NFS: у меня есть свободный прекрасно работающий мини-компьютер Intel NUC, и я его настроил как сетевое хранилище, поэтому могу ограничивать запись на карты памяти плат, а с помощью утилиты log2ram можно обезопасить себя ещё больше. 

Я работаю с картами памяти большого объёма, поэтому мне нужно, чтобы вся система могла стабильно работать в течение довольно длительного времени.

Замечание по картам памяти: я использую SanDisk Extreme Pro 128GB, A2, UHS-I, U3, V30 по нескольким причинам. 

Первая: чем больше свободного пространства, тем меньше вероятность выхода из строя всей карты, и вторая причина — пожизненная гарантия на карты памяти Sandisk, что, в случае выхода из строя всего кластера, сэкономит мне два дополнительных Raspberry Pi. Чтобы избежать нежелательных задержек, если сбой всё-таки произойдёт, советую всегда иметь под рукой резервную карту памяти. Никогда не знаешь наперёд, когда она может понадобиться.

Работа с сетью

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

Сетевой трафик незадействованного кластера
Сетевой трафик незадействованного кластера

Подключение кластера напрямую к домашнему Wi-Fi-маршрутизатору, особенно к типовому маршрутизатору от провайдера Интернета, — не самая хорошая идея, так как характеристики таких маршрутизаторов оставляют желать лучшего, ведь они оптимизированы под обычного пользователя.

Использование сетевых ресурсов активным кластером
Использование сетевых ресурсов активным кластером

Если вас интересуют сетевые аспекты, ознакомьтесь с моей предыдущей статьёй, в которой я подробно описал настройку моей домашней сети.

Питание

Энергопотребление Raspberry Pi по данным raspi.tv
Энергопотребление Raspberry Pi по данным raspi.tv

Raspberry Pi практически не потребляет мощности и имеет высококачественные разъёмы, поэтому я решил использовать блок питания с несколькими розетками. Мой выбор пал на RAVPower Official — блок питания на 60 Вт (ссылка на Amazon). Он отлично справляется с работой: при шести подключённых Raspberry Pi у меня не было ни одного сбоя электропитания.

Устройство имеет один «вход». Оно не только миниатюрное, но и очень удобное: подключаться к ИБП стало намного проще, чем через стандартный удлинитель с несколькими розетками. Ещё один совет: подбирайте кабели питания как можно более высокого качества и как можно более короткие, это позволит избежать сбоев. Кроме того, рекомендую отключить Wi-Fi на Raspberry Pi, так как эта функция пусть немного, но потребляет энергию.

Разгон процессора Pi

Разгон процессора Raspberry Pi может повлечь за собой снятие гарантии!

После обязательного предупреждения хочу затронуть тему регулировки параметров Pi. Да, разогнать процессор Pi даже проще, чем можно было подумать. Сделать это можно, просто изменив значения параметров файла /boot/userconfig.txt, используемого rPI (и включённого в /boot/config.txt) в процессе загрузки.

#uncomment to overclock the arm. 700 MHz is the default.
over_voltage=2
arm_freq=1750

С подробностями о разгоне процессоров можно ознакомиться в этой статье, а также в официальной инструкции, хотя ваш PI, скорее всего, будет благодарен и за то, что вначале вы установите на него хотя бы несколько радиаторов и вентиляторов.

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

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
SkillFactory
Школа Computer Science. Скидка 10% по коду HABR

Комментарии 6

    0
    А можно ли питать платы не через USB, а через GPIO или еще как-то, что бы питание и Ethernet были физически с одной стороны?
    Давно думаю о том что бы избавится от стойки, заменить пару старых-добрых DELL R610 на кластер малинок+NAS, для моих задач их хватит более чем, но менять аккуратную стойку на ежа из проводов USB и патч кордов не очень хочу.
      0
      Да, можно запитать Raspberry Pi 4 (и другие тоже) через 40-пиновый разъём. Для этого можно использовать пины 2 и 4, помеченные как +5V и любой из пинов Ground. Пины 2 и 4 подключены прямо к контактам питания USB-C-разъёма. Такой способ питания используют некоторые шилды, например вполне официальный PoE HAT. И это описано в дизайн-гайде для шилдов.
        0
        PoE HAT вообще круто, даже не подумал об этом, а может еще и посоветуете аналог не за 25 баксов, может китайцы что-то подобное делают? Быстрый поиск показал китайский PoE для малины за 17$, но без кулера.
          0
          Нет, не знаю. Я и этим-то не пользовался, знаю только, что он есть.
      0
      Что-то я не понял, при чём тут кубер, если статья почти целиком о «я придумал, как рассеять по 5Вт с платы и узнал о влиянии конвекции» и слегка о «а знаете, линукс пишет на карту, и ей приходит крышка» (крышка приходит, даже если не писать — хуже того, данные могут искажаться без всяких видимых ошибок).
      Вроде как малинки, с 3-й начиная, умеют бутиться с USB — т.е. можно прикрутить «нормальную» коробочку с 2,5" или mSATA2USB. И в итоге логично загрузить что-то, что позволит остальное грузить по NFS/iSCSI — и больше с локальным устройством дела не иметь.
        0
        Да, третьи малины умеют грузиться с USB. Для 4-й нужно прошить бутлоадер. Но делать загрузку с USB-SSD в таком кластерочке громоздко и дорого. Возможно, если карты мрут нечасто, это более выгодно. Тем более, что кластер должен переживать потерю ноды. Вот у меня дома Home Assistant работает на малине и она одна. Тут ради отказоустойчивости разумно внедрить SSD.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое