The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Google открыл gVisor, гибрид системы виртуализации и контейн..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от opennews (??) on 03-Май-18, 09:44 
Компания Google представила (https://cloudplatform.googleblog.com/2018/05/Open-sourcing-g...) проект gVisor (https://github.com/google/gvisor), в рамках которого подготовлен новый открытый runtime для обеспечения изолированного запуска контейнеров, соответствующий требованиям спецификации Open Container Initiative (https://www.opennet.ru/opennews/art.shtml?num=46889) (OCI). gVisor может применяться в качестве слоя в Docker и Kubernetes, заменяя предлагаемый в них штатный runtime. Код gVisor написан на языке Go и поставляется (https://github.com/google/gvisor) под лицензией Apache 2.0.


При разработке gVisor была поставлена задача создания решения для выполнения контейнеров, более легковесного чем системы виртуализации, но обеспечивающий сходный с ними уровень изоляции. Ключевым компонентом gVisor является собственное ядро, которое написано на языке Go и реализует большинство системных вызовов ядра Linux. Язык Go выбран для обеспечения дополнительной защиты, благодаря встроенным средствам контроля типов и границ блоков памяти, исключению проблем use-after-free, защите от переполнений стека и наличию детектора состояний гонки.

Ядро gVisor выполняется как обычный непривилегированный процесс и обеспечивает работу изолированного окружения контейнера. По аналогии с  системами виртуализации в каждом подобном окружении используется своё ядро и набор виртуализированных устройств, отделённых от хост-системы и других контейнеров. Ядро gVisor обрабатывает все системные вызовы от приложений, изолируя их от остальной системы. При этом, gVisor  не просто транслирует системные вызовы приложений в запросы к ядру Linux, а самостоятельно реализует основные примитивы ядра (сигналы, ФС, блокировки, маппинг памяти, неименованные каналы и т.п.) и выстраивает предоставляемые приложениям обработчики системных вызовов на основе данных примитивов. Так как ядро gVisor реализовано в форме обычного процесса, то для реализации функциональности  примитивов выполняется обращение к ограниченному набору штатных системных вызовов основного ядра Linux.

Подобный подход предоставляет высокую гибкость в управлении ресурсами и более низкие накладные расходы по сравнению с VM, но ценой этому становится повышение накладных расходов при обработке системных вызовов и ограниченная совместимость с приложениями. В настоящее время реализовано около 200 наиболее часто применяемых системных вызов. Некоторые системные вызовы и параметры пока не реализованы и отсутствует поддержка части иерархии /proc и /sys, что требует особого отношения при подборе программ для запуска в контейнерах gVisor. Из работающих с gVisor приложений отмечены Node.js, Java 8, MySQL, Jenkins, Apache httpd, Redis, PHP, Tomcat, WordPress и MongoDB. Из пока не работающий приложений можно отметить nginx, Elasticsearch и PostgreSQL.

Для организации доступа к частям файловой системы хост-системы применяется специальный процесс-прокси Gofer, использующий протокол 9P. Для доступа к сети в ядре gVisor реализован собственный сетевой стек (netstack), поддерживающий отслеживание состояний соединения и  пересборку пакетов. Netstack полностью изолирован от сетевого стека ядра Linux и взаимодействует с внешним миром через виртуальное устройство, работающее в отдельном пространстве имён. Для особых ситуаций предусмотрен режим прямого проброса сетевых соединений, ценой снижения уровня изоляции. Для переключения контекста и реализации маппинга памяти предлагается использовать Ptrace или KVM.


В обычных контейнерах применяется общее для всех изолированных окружений ядро Linux с разграничением доступа к ресурсам на уровне cgroups и namespaces, что является слабым звеном безопасности, так как не все ресурсы ограничиваются, а уязвимость в ядре Linux компрометирует всю систему изоляции. В условиях, требующих надёжной изоляции приложений от системы применяется метод запуска каждого контейнера в отдельной виртуальной машине со своим ядром и системным окружением, но по сравнению с контейнерами а базе cgroups и namespaces указанный способ требует существенно больше ресурсов и тратит много времени на запуск. В рамках проекта Kata (https://www.opennet.ru/opennews/art.shtml?num=47718) уже  создан runtime на базе гипервизора и специальных урезанных окружений с
оптимизированным ядром Linux, который частично решает указанные проблемы.


URL: https://cloudplatform.googleblog.com/2018/05/Open-sourcing-g...
Новость: https://www.opennet.ru/opennews/art.shtml?num=48538

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  –1 +/
Сообщение от анонимтут on 03-Май-18, 09:45 
> протокол 9P

O_o Не пропала концепция - Plan 9 вспомнили.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

18. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +3 +/
Сообщение от Аноним (??) on 03-Май-18, 15:02 
И тебя с разморозкой. Протокол p9 давным давно используется, например обычным попсовым qemu (и kvm) для обмена файлами с хостом через виртуальные интерфейсы.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от Аноним (??) on 03-Май-18, 09:50 
Судя по всему, будет тормозить.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от пох on 03-Май-18, 10:56 
> Судя по всему, будет тормозить.

и неработать.
Брысь, дедушка, ты не в тренде - сейчас это не важно, важно oci, go, протокол 9p.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним email(??) on 03-Май-18, 09:51 
>В обычных контейнерах применяется общее для всех изолированных окружений ядро Linux с разграничением доступа к ресурсам на уровне cgroups и namespaces, что является слабым звеном безопасности, так как не все ресурсы ограничиваются

Интересно каких именно ограничений им не хватает в докере?
>а уязвимость в ядре Linux компрометирует всю систему изоляции

Как и уязвимость в gVisor.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +4 +/
Сообщение от F on 03-Май-18, 10:10 
https://habr.com/post/332450/
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  –4 +/
Сообщение от пох on 03-Май-18, 10:43 
о, спасибо, прекрасное (там есть линк и на более свежие впечатления, в принципе, можно не читать, они предсказуемы).  А то аналогичная статья 14го года уже плохо помогала в спорах с генитальными разработчиками - "там же все вранье, это все уже переписали, уже три раза!".

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +5 +/
Сообщение от пох on 03-Май-18, 10:53 
> Интересно каких именно ограничений им не хватает в докере?

очевидных. реальной а не виртуальной изоляции приложений, fine-grained изоляции ресурсов (докер, в силу родовой травмы, не может точно отмерять кусочек cpu/кусочек дискового throughput - то что умеет какой-нибудь openvz с незапамятных времен)
>>а уязвимость в ядре Linux компрометирует всю систему изоляции
> Как и уязвимость в gVisor.

"выполняется от непривиллегированного пользователя", какое слово вам перевести?

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

другое дело, что эта гуглохрень наследует все инфраструктурные проблем доскера, поскольку без него неработоспособна, в ней работает аж три полезные и пять бесполезных программ, а вместо cgroups полагается на kvm, которая обеспечивает не root, а сразу kernel level equivalence, и которую точно так же ломали, ломают и ломать будут.
зато на го.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

19. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +2 +/
Сообщение от Аноним (??) on 03-Май-18, 15:13 
> (докер, в силу родовой травмы, не может точно отмерять кусочек cpu/кусочек
> дискового throughput - то что умеет какой-нибудь openvz с незапамятных времен)

Сейчас это умеет уже более-менее и сам линух. А у опенвзы родовая травма в виде левого ядра которое поддерживается через пень колоду так и осталась. За что он и вылетает отовсюду - я уж не знаю что там случилось но у половины хостеров KVM стоит даже уже дешевле чем VZ у тормозных барыг которые им еще пользуются. А проблем радикально меньше. Ну то-есть для хостера openvz это куча грабель, а остальным "точно отмерять кусочек" не так уж сильно надо, чтобы с левыми ядрами мучаться.

Да и "точно отмерять" например производительность HDD - дохлый номер, из-за того что софт не может прогнозировать время полета голов от сих до сих. Для SSD и тому подобного - еще куда ни шло.

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

20. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от пох on 03-Май-18, 16:27 
> За что он и вылетает отовсюду - я уж не знаю что там случилось

банальное там "слуцилась" - те части их кода, которые удалось "каждое заверните в салфеточку и отнесите в машину" - успешно пользует...правильно, kvm, xen и libvirt (и немедленно обросли несовместимыми с прародителем правками, так что вреда им от этого было куда больше чем пользы).
А те что в ядре пришлись не ко двору, потому что денег на взятки линусовой братии у них не хватило - в конце-концов стало невозможно без конца переделывать в погоне за вечно движущейся целью, силами полутора уцелевших разработчиков. Тем более что те имели дурную привычку делать хорошо и разбираться в том, что делают окружающие, а не "ну nginx не запускается, но нам нафиг не нужен".

так что на этом проекте можно ставить крестик, но речь-то не об этом, а о том что современные и того не могут толком. Вот и изобретают обратно все тот же квадратноколесатый велосипед. Зато он модной расцветочки.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

32. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 04-Май-18, 12:40 
> кусочек дискового throughput - то что умеет какой-нибудь openvz с незапамятных времен)

Да да. OpenVZ умеет вставлять циклы ожидания в JBD2, после чего начинают тормозить все :-)
А еще умеет сломать дисковый кэш потому-что кому-то из разработчиков влом править GFP маску при kmalloc :-)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

8. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +4 +/
Сообщение от Аноним (??) on 03-Май-18, 10:39 
да-а-а, красота - "мы переписали uml (который, вообще-то, на минуточку, просто работал, медленно, зато на pentiumI, без малейших намеков на аппаратную помощь виртуализации) на игогошеньке - зачем - не знаем, патамушта магем. Правда, у нас даже nginx в нем не запускается, зато игогогогого!"

Правда, uml не требовал для своей работы kvm (то есть, неожиданно, виртуализации не получилось, "к счастью, в ядре вообще-то было уже все готовое". Что это как бы не совсем "непривиллегированный процесс", аккуратно забыто).

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +3 +/
Сообщение от IB on 03-Май-18, 12:11 
Да, странное изделие.
Непредсказуемые несовместимости во все поля.
Получается строго заточено под набор приложений с которыми тестировалось самим Гуглем.

Запуская своё никто не гарантирует, что вдруг поведение не станет непредсказуемым.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

15. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от пох on 03-Май-18, 13:09 
не переживай - запуская докер в коммерческом окружении, ты и так гарантирован что поведение станет непредсказуемым.

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

Интересно, кстати, почему они вместо этой хрени не использовали работающие (в тех пределах, в которых вообще докер можно считать работающим) clear containers? NIH? Древнее железо (гугль любит очень странные процессоры и другие детали в своих картонных серверах)?

Впрочем, я сомневаюсь что мы увидим техническое обоснование - скорее всего и внутри гугля они давно немодны, моден хайп (из которого целиком и состоит новость, в смысле, ее первоисточник)

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

12. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от anonymous (??) on 03-Май-18, 11:03 
Так это же UML-2.0.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  –2 +/
Сообщение от пох on 03-Май-18, 12:34 
uml, в отличие от этого гуглонедоразумения - работал. Но был не от гугля, не на модном go, не поддерживал модный oci-трэш, и не нравился Линусу. Поэтому быстро помер от недостатка внимания.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

22. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 03-Май-18, 19:02 
В смысле помер? до сих пор спокойно можно собрать ядро с ARCH=um. Когда в последний раз запускать такое ядро версии 4.0 (или чуть новее), то все более-менее работало.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

24. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от пох on 03-Май-18, 19:23 
> В смысле помер? до сих пор спокойно можно собрать ядро с ARCH=um.

собрать-то, наверное, можно, но зачем?

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

21. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 03-Май-18, 17:26 
Что использовать вместо докера? Эта вся гомогребля с сетями и багами докера не кажется привлекательной.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от пох on 03-Май-18, 19:22 
> Что использовать вместо докера?

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

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

Если тебе надо что-то другое, то уточняй задачу.

В том числе с учетом новых знаний о неисправимых багах процессоров, из-за которых изоляция "контейнеров" невозможна в принципе, изоляция hardware virtualized систем - частично и без гарантий.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

25. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от _ (??) on 03-Май-18, 19:39 
>собственное ядро, которое написано на языке Go и реализует большинство системных вызовов ядра Linux

Оло-ло-шечка ... 8-о
А нкоторые до сих пор спорят взлетел ли Go? %-)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от пох on 03-Май-18, 19:43 
только ничего не работает, кроме трех программ.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

27. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от пох on 03-Май-18, 19:45 
> только ничего не работает, кроме трех программ.

(и да, если присмотреться - "реализует"-то - кривой враппер в основном, к реально работающим функциям стандартного линуксного ядра)

своего осилено, походу, сетевой эмулятор (очередной, и неведомо с какой эффективностью) и что там - сокеты? Мухахаха.


Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

28. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 03-Май-18, 20:41 
1) запускаем на нормальном Linux под strace
2) находим вызовы, которые пока не поддерживаются
3) пишем багрепорт
...
PROFIT!!!
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

29. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +1 +/
Сообщение от пох on 04-Май-18, 00:30 
> 3) пишем багрепорт

получаем wontfix или просто он висит вечно.
Как ты понимаешь, запустить nginx со strace разработчики могли и сами - только недостающий и не факт что тривиальный (ибо треды и взаимоблокировки) код сам не напишется.


Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

30. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 04-Май-18, 01:14 
> Язык Go выбран для обеспечения дополнительной защиты, благодаря встроенным средствам контроля типов и границ блоков памяти, исключению проблем use-after-free, защите от переполнений стека и наличию детектора состояний гонки.

Очень интересно оправдает оно себя или нет

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

31. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от Аноним (??) on 04-Май-18, 11:32 
А почему не на Rust?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

33. "Google открыл gVisor, гибрид системы виртуализации и контейн..."  +/
Сообщение от _ (??) on 04-Май-18, 17:10 
We leave the Rust for the competitors ... (C)

;-)

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor