LINUX.ORG.RU

Cloud-разработка в Chrome OS на ASUS Chromebit и Kubernetes+CoreOS

 , , ,


16

5

У меня давно настроен Kubernetes+CoreOS на одной машине и это позволяет мне экспериментировать с разработкой распределенных приложений дома и запускать разные сервисы вроде торрентов и транскодинга в условиях жесткой изоляции среды и ресурсов.

Я решил попробовать устроить себе среду разработки, которая будет соответствовать определенным критериям

  • Будет глобально доступна с любой машины в мире без установки софта кроме браузера.
  • При работе с другого континента не будет ощущаться задержка при печати как было бы в vim+tmux. mosh скорее всего бы не решил проблему с vim.
  • Глобально доступны по HTTPS веб-приложения запущеные в этой среде
  • В Linux среде где запускается разрабатываемое приложение можно заменить дистрибутив на другой за несколько минут, но сохранить home.

Чтобы эксперимент был чистым все это тестируется на ASUS Chromebit со стоковой ChromeOS, 2 ГБ памяти и ARM Rockchip Quad-Core RK3288C, которая размером с большую флешку и воткнута в телевизор LG 49LB550V. Потому шрифты могут быть чуть больше чем обычно, чтобы было лучше видно на телевизоре. Устройство очень маломощное, но работает быстро потому что в ChromeOS нету дискового swap, только RAM+zRAM и если что-то не влезает, то выгружается.

Скриншоты

  • Редактор Codiad в полноекранном режиме. В принципе можно установить любой другой, но для обычного редактирование текста он подходит. Если найду такой, который потребляет мало памяти и умеет режим vim, поставлю его.
  • tmux. Вот так выглядит контейнер для разработки. Он совершенно отдельный от Codiad и я могу менять в нем дистры простым редактированием Dockerfile. В него и в Codiad примонтирован один и тот-же каталог с исходным кодом. При смене контейнера home тоже сохраняется. В данном случае в контейнере последняя версия Ubuntu, но ядро как всегда остается хостовым от CoreOS. В контейнер заранее установлены средства разработки на C++, Go, Python, NodeJS.
  • Caddy, который вы видели запущеным в контейнере. Интересная часть заключается в том, что для него создается виртуальный хост, создается Let's Encrypt сертификат и производится авторизация. Это умеет делать и сам Caddy, но он тут просто для демо. Суть в том, что в данном случае это будет делаться на уровне nginx фронтенда для любого приложения открывшего порт 8080 в контейнере
  • tmux+vim. Если работать не издалека, то вполне можно просто пользоваться tmux+vim. Плагины на него устанавливаются в home и в основном продолжают работу при смене дистра, кроме тех, которым нужна перекомпиляция.
  • Внутренности. Это Kubernetes Dashboard. В ней вы видите некоторые из упомянутых выше контейнеров и еще много чего. Для временных изменений некоторые параментры контейнеров можно менять прямо в UI, но лучше конечно через файл конфигурации.

Изначально CoreOS машина разворачивается сама по iPXE на голый диск. Если система уже была установлена, то она просто загружается. После этого по SSH необходимо загрузить ключи и некоторый набор базовых сервисов Kubernetes. Теперь кластером можно пользоваться удаленно через kubectl. Я запустил там локальный docker реестр, потому вы видите localhost в названии некоторых контейнеров. На моей машине различные сервисы работают на Alpine Linux, Ubuntu или CentOS в зависимости от того, на чем было проще настроить конкретное приложение. Если разницы нету, то я использую Alpine, так как тогда контейнеры наиболее компактны.

Цепочка загрузки такая

  • BIOS
  • PXE
  • iPXE
  • Ядро CoreOS
  • systemd
  • Docker
  • Kubernetes
  • Сервисы из публичных образов и локальный Docker реестр
  • Сервисы из локального Docker реестра

В качестве сервера использую старый Dell ноутбук с Core i7-2630QM, 8GB RAM и сломаной батареей, ибо нечего ему пылиться с таким процессором.

Если я захочу подключить второй сервер, то мне нужно сделать два действия: сделать для второго сервера облегченный конфиг без части Kubernetes демонов и придумать как монтировать диски удаленно. Пока что персистентные каталоги монтируются в хост систему, что не будет работать если сервисы будут случайно мигрировать между машинами. Но если я это сделаю, то полностью програмная виртуальная сеть на flannel будет работать полностью прозрачно и контейнеры на разных будут общаться друг с другом так же просто как и раньше. Из того что можно настроить дома поддерживаются GlusterFS+Heketi, Ceph и NFS

Среди дополнительных удобств на сервере есть связка Transmission+Plex, интерфейсы которых тоже доступны глобально. Потому я могу пойти в гости, поставить torrent дома с телефона, а потом транскодированый и оптимизированый фильм можно посмотреть на телевизоре например через Chromecast, AppleTV, PS4, XBox, Android, Windows Phone или другой способ отобразить браузер с компьютера на телевизор.

В качестве заключения скажу что мне понравился такой способ настройки домашнего сервера. Использование Docker контенеров позволяет уравнять в легкости настройки опакеченый софт из дистрибутивов и софт, который устанавливается скриптом сборки на github. Они оба могут быть завернуты в контейнер на любом дистрибутиве и потом когда более не нужны могут быть аккуратно удалены. Kubernetes очень облегчил работу с виртуальными хостами, шифрованием, перенаправлением портов, изоляцией ресурсов, перезапуском упавших сервисов и проверкой их здоровья.

>>> Просмотр (1920x1080, 1069 Kb)

★★★☆☆

Проверено: JB ()

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

dima1981 ()
Ответ на: комментарий от dima1981

Это еще один способ как настроить домашний сервер под кроватью. Люди подымают FreeNAS, просто Linux сервера. Вот я показал как еще можно. Просто это хоть и один сервер из старого ноутбука, но он очень близок к тому как сейчас подымают сервера на Kubernetes в продакшне

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

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

dima1981 ()

Какая-то жесть. Но нраица.

ozzee ()

Я это, посплю, потом утром, может быть, осознаю глубину всего решения %-/ Но Ява до хорошего не доводит. Я хз как оно там в Гугле, явно прокачанные мозговые девианты собираются целенаправленно, а потом случаются CloudFlare bleed.

Что случается, когда одна из матрёшек в твоём списке начинает глючить?

Deleted ()
Ответ на: комментарий от olibjerd

Ящитаю, видео Деда с нешвадобного ютуба - тянет на оскорбление чувств

TheAnonymous ★★★★★ ()
Ответ на: комментарий от TheAnonymous

Оскорбление чувств Деда или оскорбление чувств Дедствующих.

karton1 ★★★★ ()

Прикольно, а в самой хромоси на х86 можно вот все то же самое, только чтобы докер (или lxc, или systemd nspawn) был локальный? И можно ли на ней имакс запустить (я наркоман, да)?

Мне собственно от компутира и нужны только хром, докер, имакс, питон и шланг.

P.S. можешь начать глядеть на kubevirt.

А еще вопрос, нетфликсы показывают на арме или нет? :)

slaykovsky ★★ ()
Последнее исправление: slaykovsky (всего исправлений: 1)

если кратко, то в чем профит?

mos ★★★★★ ()

если что-то не влезает, то выгружается.

Верный подход. Но православно было бы не выгружать, а убивать, стирать данные и банить пользователя.

AVL2 ★★★★★ ()

Будет глобально доступна с любой машины в мире без установки софта кроме браузера.

Тоже в последнее время заморочился фермой для разработки на схожем стеке технологий. Но подходящую IDE не нашел. Codiad - только редактор, дебажить в нем никак. с9 - нет self-hosted варианта. Eclipse Che - не умеет в ES6. Так что пока в поисках.

Ну и да, у меня это все работает по схеме local -> gitlab -> CI -> kubernetes.

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise

Codiad - только редактор, дебажить в нем никак

Да, я скорее всего буду дебажить логами

с9 - нет self-hosted варианта

Есть их SDK, который подымает инстанс на одного пользователя.

local -> gitlab -> CI -> kubernetes

Для персистентных каталогов ты используешь hostPath или что-то круче? Оказалось поднять на одной ноде Ceph/GlusterFS - дело не для слабонервных. Я вот думаю поднять контейнер с SSH+NFS но вроде бы уже после проброса порта этот порт будет торчать открытым для кого попало. Понятно дело что я неуловимый Джо, но хочу настраивать все более менее вменяемо с образовательной целью

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)

если еще дополнить связку с amazon s3, то у тебя будет доступное отовсюду постоянное хранилище данных.

Nurmukh ★★ ()

а что за YouTube-Chromium-плагин у тебя такой, который как в Opera делает окно с видео отдельным?

NK ★★★★★ ()
Ответ на: комментарий от Nurmukh

Но тогда и запускать надо на амазоне. В принципе я могу это сделать, конфиги достаточно общие чтобы переехать в общественное облако. В этом и плюс Kubernetes. Но пока что мне хватает

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Пока что NFS, у меня есть вторая нода на arm, на которой висит всякая мелочь в духе dns или vpn, а пустого места - вагон.

Но вообще я все это делал на скорую руку, лишь бы потрогать кубернетес/ранчер/опеншифт с целью изучения, поэтому, например, гитлаб живет не внутри кубернетеса, а параллельно с ним, и многие вещи работают не лучшим образом, а первым взлетевшим. Так что в ближайшее время буду переделывать с нуля с использованием накопленных с первой попытки знаний, и тогда уже попробую сделать ceph.

l0stparadise ★★★★★ ()
Последнее исправление: l0stparadise (всего исправлений: 1)
Ответ на: комментарий от l0stparadise

Пока что NFS

Как проходной двор или как-то хитро? Ведь мало того что его внутри сети видно, так еще из любого контейнера. Читай-пиши нехочу. Я с этим пока что ничего умного не придумал.

Это намного дырявее hostPath, так как как раз в него контейнеры вылезти не могут

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

С сетью не страшно, iptables режет все, кроме 22, 53 и второго хоста. Да и в /etc/exports вроде можно разрешить монтировать только для отдельных айпишников.

А вот с проходным двором для любых контейнеров тоже пока ничего не придумал.

l0stparadise ★★★★★ ()
Ответ на: комментарий от vertexua

зачем? если на амазон переедешь, то будешь платить за с3 и за вычислительные мощности. зачем? тебе же нужен постоянное хранилище данных, чтобы 2 и более серверов вместе работали?

думаю, не составит труда обучить ipxe, чтобы он подгружал свои файлы прямо с с3.

Nurmukh ★★ ()
Ответ на: комментарий от slaykovsky

Прикольно, а в самой хромоси на х86 можно вот все то же самое, только чтобы докер

https://github.com/dnschneid/crouton

Там вроде убунту и дебиан пускать можно.

P.S. можешь начать глядеть на kubevirt.

Не понял, зачем?

А еще вопрос, нетфликсы показывают на арме или нет? :)

DRM модуль есть в любой ChromeOS, но я не тестировал производительность. Уже не знаю, если наколеночный Plex тянет и YouTube 1080p, то Netflix должен работать

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Не понял, зачем?

Еще один слой абстракции (над kubernetes)

Благодарю ;)

slaykovsky ★★ ()
Ответ на: комментарий от Nurmukh

В Kubernetes вроде нельзя удаленно монтировать S3 из-за пределов амазона. Только если ты внутри, то оно автоматически умеет provisioning

vertexua ★★★☆☆ ()
Ответ на: комментарий от slaykovsky

Еще один слой абстракции (над kubernetes)

Там просто речь вроде о VM, а мне контейнеров хватает, другие ОС не нужны. Тем более пока у меня 8ГБ, то судилось мне только контейнеры гонять.

vertexua ★★★☆☆ ()
Ответ на: комментарий от slaykovsky

Нетфликс адаптирует качество под условия, в которых он работает. Так что если смотреть с калькулятора, он по-прежнему будет показывать, но квадратами.

l0stparadise ★★★★★ ()

А что это у тебя на обоях — фотография какого-то рандомного побережья или может это видео в реальном времени со спутника гугла, смотрящего на крым?

moot ★★★ ()

А на этот Chromebit нормальную ОС можно поставить?

tailgunner ★★★★★ ()
Ответ на: комментарий от moot

Там уже пустыня? Быстро.

Это вроде стандартные обои

vertexua ★★★☆☆ ()
Ответ на: комментарий от tailgunner

Хз, но если кастомизировать, то за те же деньги есть Intel Compute Stick который даже продается с Ubuntu. Но есть сильные подозрения что на таком девайсе кроме ChromeOS все остальное будет показывать слайдшоу. Разве что какой-то i3wm/awesome держать и Firefox с NoScript

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)

Порекомендуйте хороший годный ман по Куберенетису.

ipeacocks ★★★★★ ()

второй раз в сем треде задаю вопрос:

Для чего все это?

Ну кроме как потренироваться в свободное от жизни время.

subwoofer ★★★★★ ()
Ответ на: комментарий от subwoofer

И потренироваться и удобство (после всех кругов ада начальной настройки)

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от subwoofer

В том что легко рулю контейнерами, могу использовать дистр под приложение, изоляция (крепче сплю), удобно делается виртуальный хостинг с Let's Encrypt и в принципе за пару шагов могу добавить еще один сервак.

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Уважаемый, а мог бы ты выложить где-нибудь(можно здесь) как настроить kubernetes on coreos?

я тоже занимаюсь coreos, а тут недавно задавали мне вопрос - а не плохо еще бы сделать кластер kubernetes.

Nurmukh ★★ ()

Какая у тебя версия Chrome OS, приложения для Android не пробовал ставить?

uuwaan ★★ ()
Ответ на: комментарий от dima1981

Я уже не первый раз твои... гхм... довольно своеобразные сообщения вижу и у меня вопрос: ты постоянно под веществами или просто такой?

Dimez ★★★★★ ()
Ответ на: комментарий от Nurmukh

Вот это гайд

https://coreos.com/kubernetes/docs/latest/kubernetes-on-baremetal.html

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

Нету мне смысла делать свой и перепечетывать 95% его. Если будут конкретные проблемы в определенных шагах - пиши, отвечу. Там было много проблем по ходу, но я уже не помню что конкретно

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от Dimez

представь мне фиолетово что тебе интересно и какие у тебя вопросы ко мне, мне с тобой контачить вообще влом под чем бы ты там не находился

dima1981 ()
Ответ на: комментарий от Dimez

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

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

dima1981 ()
Ответ на: комментарий от dima1981

Не в обиду будет сказано, но в твоем тексте дейсвительно 5 точек, из них две - в «т.д.», одна - в конце. Я думаю нужно над формулировкой мысли поработать.

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.