The OpenNET Project / Index page

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

03.05.2018 09:20  Google открыл gVisor, гибрид системы виртуализации и контейнеров

Компания Google представила проект gVisor, в рамках которого подготовлен новый открытый runtime для обеспечения изолированного запуска контейнеров, соответствующих требованиям спецификации Open Container Initiative (OCI). gVisor может применяться в качестве слоя в Docker и Kubernetes, заменяя предлагаемый в них штатный runtime. Код gVisor написан на языке Go и поставляется под лицензией Apache 2.0.

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

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

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

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

Напомним, что в обычных контейнерах применяется общее для всех изолированных окружений ядро Linux с разграничением доступа к ресурсам на уровне cgroups и namespaces, что является слабым звеном безопасности, так как не все ресурсы ограничиваются, а уязвимость в ядре Linux компрометирует всю систему изоляции. В условиях, требующих надёжной изоляции приложений применяется метод запуска каждого контейнера в отдельной виртуальной машине со своим ядром и системным окружением, но по сравнению с контейнерами на базе cgroups и namespaces указанный способ требует существенно больше ресурсов и тратит много времени на запуск. В рамках проекта Kata развивается runtime на базе гипервизора и специальных урезанных окружений с оптимизированным ядром Linux, который частично решает указанные проблемы.

  1. Главная ссылка к новости (https://cloudplatform.googlebl...)
  2. OpenNews: Google представил Cilium, сетевую систему для Linux-контейнеров, основанную на BPF
  3. OpenNews: Компания Google открыла код системы изолированных контейнеров Lmctfy
  4. OpenNews: Linux Foundation представил containerd 1.0, runtime для изолированных контейнеров
  5. OpenNews: Intel представил инструментарий Clear Containers 3.0, переписанный на языке Go
  6. OpenNews: Компании Intel и Hyper представили проект Kata Containers
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: gvisor, container, docker, virtual
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.2, анонимтут, 09:45, 03/05/2018 [ответить] [смотреть все]    [к модератору]
  • –1 +/
    > протокол 9P

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

     
     
  • 2.18, Аноним, 15:02, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]
  • +3 +/
    И тебя с разморозкой Протокол p9 давным давно используется, например обычным по... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Аноним, 09:50, 03/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Судя по всему, будет тормозить.
     
     
  • 2.11, пох, 10:56, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    и неработать Брысь, дедушка, ты не в тренде - сейчас это не важно, важно oci, g... весь текст скрыт [показать] [показать ветку]
     
  • 1.4, Аноним, 09:51, 03/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Интересно каких именно ограничений им не хватает в докере Как и уязвимость в gV... весь текст скрыт [показать]
     
     
  • 2.7, F, 10:10, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +4 +/
    https://habr.com/post/332450/
     
     
  • 3.9, пох, 10:43, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –4 +/
    о, спасибо, прекрасное там есть линк и на более свежие впечатления, в принципе,... весь текст скрыт [показать]
     
  • 2.10, пох, 10:53, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +5 +/
    очевидных реальной а не виртуальной изоляции приложений, fine-grained изоляции ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.19, Аноним, 15:13, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Сейчас это умеет уже более-менее и сам линух А у опенвзы родовая травма в виде ... весь текст скрыт [показать]
     
     
  • 4.20, пох, 16:27, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    банальное там слуцилась - те части их кода, которые удалось каждое заверните ... весь текст скрыт [показать]
     
  • 3.32, Аноним, 12:40, 04/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Да да OpenVZ умеет вставлять циклы ожидания в JBD2, после чего начинают тормози... весь текст скрыт [показать]
     
  • 1.8, Аноним, 10:39, 03/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +4 +/
    да-а-а, красота - мы переписали uml который, вообще-то, на минуточку, просто р... весь текст скрыт [показать]
     
     
  • 2.13, IB, 12:11, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +3 +/
    Да, странное изделие Непредсказуемые несовместимости во все поля Получается ст... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, пох, 13:09, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    не переживай - запуская докер в коммерческом окружении, ты и так гарантирован чт... весь текст скрыт [показать]
     
  • 1.12, anonymous, 11:03, 03/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Так это же UML-2.0.
     
     
  • 2.14, пох, 12:34, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –2 +/
    uml, в отличие от этого гуглонедоразумения - работал Но был не от гугля, не на ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, Аноним, 19:02, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    В смысле помер до сих пор спокойно можно собрать ядро с ARCH um Когда в послед... весь текст скрыт [показать]
     
     
  • 4.24, пох, 19:23, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    собрать-то, наверное, можно, но зачем ... весь текст скрыт [показать]
     
  • 1.21, Аноним, 17:26, 03/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Что использовать вместо докера Эта вся гомогребля с сетями и багами докера не к... весь текст скрыт [показать]
     
     
  • 2.23, пох, 19:22, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    плетку Которой отучать разработчиков создавать трэш, работающий только на побит... весь текст скрыт [показать] [показать ветку]
     
  • 1.25, _, 19:39, 03/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    >собственное ядро, которое написано на языке Go и реализует большинство системных вызовов ядра Linux

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

     
     
  • 2.26, пох, 19:43, 03/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    только ничего не работает, кроме трех программ.

     
     
  • 3.27, пох, 19:45, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    и да, если присмотреться - реализует -то - кривой враппер в основном, к реальн... весь текст скрыт [показать]
     
  • 3.28, Аноним, 20:41, 03/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    1 запускаем на нормальном Linux под strace 2 находим вызовы, которые пока не п... весь текст скрыт [показать]
     
     
  • 4.29, пох, 00:30, 04/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    > 3) пишем багрепорт

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


     
  • 1.30, Аноним, 01:14, 04/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Очень интересно оправдает оно себя или нет... весь текст скрыт [показать]
     
  • 1.31, Аноним, 11:32, 04/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    А почему не на Rust?
     
     
  • 2.33, _, 17:10, 04/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    We leave the Rust for the competitors ... (C)

    ;-)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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