Вопрос ковыряния ядра Linux впервые поднимался в этом блоге еще в далеком 2016-м году. Мы научились собирать ядро из исходников и цепляться к нему отладчиком. Но на этом все и заглохло. Тогда найти актуальную информацию по разработке ядерного кода в Linux, да еще и в удобоваримом виде, было проблемой. Я предпочел дождаться появления свежих книг по теме, а пока заняться изучением чего-то другого. И вот, спустя пять лет, такие книги были опубликованы. В связи с чем я решил попробовать написать пару модулей ядра, и посмотреть, как пойдет.

TimescaleDB — это расширение PostgreSQL для работы с временными рядами (time series). Временные ряды можно хранить в PostgreSQL и просто так, но TimescaleDB обеспечивает большую производительность на том же железе. Также расширение предлагает ряд удобных фичей, специфичных для тайм-серий.

WebDAV — это расширение протокола HTTP, описанное в RFC4918. WebDAV добавляет в HTTP возможность загружать файлы на сервер, а также удалять / перемещать их, и так далее. В итоге мы получаем что-то очень похожее на FTP, или даже на сетевую файловую систему типа NFS или Samba. Давайте же выясним, как этим пользоваться.

CockroachDB — это распределенная РСУБД, написанная на Go. Является представителем так называемых NewSQL баз данных, которые пытаются совместить в себе горизонтальную масштабируемость и высокую доступность NoSQL решений с интерфейсом (SQL) и строгостью (ACID) традиционных РСУБД. Помимо прочего, CockroachDB интересен тем, что реализует протокол PostgreSQL, что упрощает портирование на него существующих приложений. Давайте же попробуем поднять свой кластер CockroachDB и поработать с ним.

При использовании Raspberry Pi в качестве роутера я столкнулся с одной проблемой. Дело в том, что дома иногда отключают свет. По моим наблюдениям, это происходит ненадолго и только в рабочие часы. Видимо, неподалеку идут какие-то ремонтные работы. Так вот, когда это происходит, мне приходится заходить на малину по SSH и запускать все, что в ней крутилось в tmux — как минимум, это OpenVPN. Мне также приходится выставлять время на микроволновке и газовой плите, поскольку в них сэкономили на часах реального времени, но это другая история. Так или иначе, встал вопрос о приобретении UPS для моего роутера.

В рамках поста Быстрое введение в Kubernetes мы познакомились с основами использования кубера, однако для его развертывания было предложено использовать либо Docker Desktop, либо облака. Давайте попробуем заполнить этот пробел, подняв простейший однонодовый кластер Kubernetes на машине под управлением Ubuntu Linux 18.04 LTS.

Так исторически сложилось, что для сохранения сессии при работе по SSH или чего-то такого обычно я использую screen. Но бывает, например, что ты работаешь с машиной, где у тебя нет рутовых прав, и где не установлен screen, но зато есть tmux. Поскольку я плохо помню сочетания клавиш tmux, то решил выписать их для себя в виде небольшой шпаргалки.

Kubernetes (часто сокращают до k8s) — открытая система оркестрации контейнеров, представленная компанией Google в 2014 году. Kubernetes реализует идею, ранее использованную во внутренней системе Google под названием Borg [PDF]. Если вкратце, идея состоят в том, что ваш деплоймент строится на базе контейнеров (например, Docker), а также описании того, сколько этих контейнеров нужно и какие ресурсы они используют. Kubernetes на базе этого описания и доступных физических машин разворачивает контейнеры и делает все возможное для поддержания требуемой конфигурации. В том числе, он перезапускает упавшие контейнеры, перемещает их для выделения ресурсов, необходимых новым контейнерам, и так далее.

Если вы давно читаете этот блог, то можете помнить некоторые старые посты, посвященные мониторингу. В частности, была рассмотрена связка из Graphite, StatsD и CollectD, а также, несколько поверхностно, сервис Datadog. Однако мир не стоит на месте. Приходят новые технологии, некоторые из которых даже оказываются лучше своих предшественников. В качестве таких новых технологий можно привести в пример связку из Prometheus и Grafana.

Беспроводные роутеры имеют несколько неприятных особенностей. Во-первых, они небезопасны, если только не разобраться с установкой OpenWrt. Во-вторых, со временем они перестают выпускаться, а значит, если ваш роутер сломается, вам придется разбираться с установкой OpenWrt на совершенно другой роутер. В-третьих, как правило, они довольно ограничены в ресурсах, а значит возложить на роутер какие-то дополнительные функции может быть проблематично. Между тем, абсолютно любой компьютер под управлением Linux может быть настроен в качестве полноценного Wi-Fi роутера, что решает проблемы безопасности, повторяемости и производительности. Для примера, рассмотрим создание беспроводного роутера на базе одноплатного компьютера Raspberry Pi.