The OpenNET Project / Index page

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

23.09.2017 11:50  Intel представил инструментарий Clear Containers 3.0, переписанный на языке Go

Компания Intel опубликовала значительный выпуск инструментария Clear Containers 3.0, предоставляющего средства для управления контейнерами, для изоляции которых используется гипервизор KVM и встроенные в процессоры Intel механизмы виртуализации Intel VT и SR-IOV. Код поставляется под лицензией Apache 2.0.

Новый выпуск примечателен кардинальной переработкой кодовой базы и рефакторингом архитектуры проекта. Инструментарий и компоненты runtime переписаны на языке Go (ранее использовался язык Си). Проведена большая работа по улучшению интеграции Clear Containers в сформировавшуюся экосистему контейнерной изоляции, в том числе расширены средства для задействования в проекте кода, используемого в контейнерах на базе namespaces и cgroups.

Функции для обеспечения работы аппаратно виртуализированных контейнеров вынесены в модульную и независящую от типа гипервизора библиотеку virtcontainers. Новая реализация runtime (cc-runtime) построена поверх библиотеки virtcontainers и приведена к полной совместимости со спецификацией OCI, определяющей унифицированный формат образов контейнеров и runtime-компонентов, что позволяет использовать cc-runtime совместно с Docker в качестве прозрачной замены runc. Кроме того обеспечена поддержка прослойки CRI-O для использования cc-runtime в кластере на базе Kubernetes.

В состав добавлен выполняемый внутри контейнера агент cc-agent на базе libcontainer, который заменил собой hyperstart и позволяет применять политики ограничения доступа SELinux и фильтры seccomp в гостевых окружениях на базе Clear Containers. Для повышения производительности ввода/вывода и достижения полного соответствия спецификациям POSIX в контейнерах Clear Containers также предоставлена возможность использования бэкенда virtio-blk. Расширены возможности вложенной виртуализации, которые позволяют выполнять немодифициованные контейнеры Clear в окружениях HyperV и VMware. Для взаимодействия между компонентами cc-shim, cc-proxy и cc-runtime реализован новый упрощённый протокол.

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

Внутри виртуального окружений Clear, которое запускается гипервизором, используется специально оптимизированное ядро Linux, содержащее только минимальный набор необходимых возможностей. Системное окружение включает в себя только демон инициализации на базе systemd и агент cc-agent. Агент обеспечивает выполнение определённых пользователем образов контейнера в формате OCI. В одном виртуальном окружении Clear может запускаться один или несколько пользовательских контейнеров (для контейнеров Docker для каждого контейнера создаётся отдельная виртуальная машина). Для каждого контейнера внутри виртуального окружения создаются отдельные пространства имён (NS, UTS, IPC и PID), т.е. запускаемое поверх гипервизора окружение Clear служит плацдармом для вложенного запуска контейнеров. Работа пользовательских контейнеров обеспечивается при помощи cc-runtime.

В условиях выполнения большого числа типовых окружений, накладные расходы на каждое последующее окружение составляет 18-20 Мб, что даёт возможность уместить 3500 виртуальных машин на сервере с 128 Гб ОЗУ. Для уменьшения потребления памяти применяется механизм DAX (прямой доступ к ФС в обход страничного кэша без применения уровня блочных устройств), а для дедупликации одинаковых областей памяти применяется технология KSM (Kernel Shared Memory), что позволяет организовать совместное использование ресурсов хост-системы и подключить к разным гостевым системам общий шаблон системного окружения. Начиная с выпуска 3.0 в Clear Containers также предоставляются средства регулирования активации процесса выявления дубликатов (KSM throttling).

  1. Главная ссылка к новости (https://01.org/blogs/alleelan/...)
  2. OpenNews: Intel представил Clear Linux с контейнерами приложений на базе виртуализации
  3. OpenNews: SUSE и openSUSE представили Kubic, платформу для развёртывания контейнерной инфраструктуры
  4. OpenNews: Компания Oracle открыла код инструментария для изолированных контейнеров
  5. OpenNews: Утверждена единая спецификация для образов и runtime изолированных контейнеров
  6. OpenNews: Выпуск системы управления контейнерами LXC 2.1
Лицензия: CC-BY
Тип: Программы
Ключевые слова: clear, linux, intel, container, golang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, фребсдоюзрнемогунайтивыход, 12:30, 23/09/2017 [ответить] [смотреть все]    [к модератору]
  • –9 +/
    чому не православный Rust?
     
     
  • 2.2, bircoph, 12:42, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]
  • +/
    Потому что он недостаточно правослаен и чуть более чем правоверен.
     
  • 2.3, Аноним, 12:43, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]
  • –1 +/
    Потому что пишет прагматичные кодеры из intelа, а не неосиляторы плюсов из тоpмо... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, VINRARUS, 15:15, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Прагматичные пишут на С, очень прагматичные пишут на Ассемблере.
     
     
  • 4.11, Аноним, 15:28, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +3 +/
    перфокарты же!
     
     
  • 5.24, Аноним, 18:18, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +7 +/
    Ты знаешь разницу между языком программирования и носителем данных?
     
  • 5.27, jh, 18:29, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    машинные коды. писать в машинных кодах, то еще удовольствие
     
     
  • 6.34, Sup, 21:45, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +3 +/
    Ну это мы еще на калькуляторе Электроника Б3-34 делали.
     
     
  • 7.58, Аноним, 07:23, 25/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +3 +/
    Контейнерную изоляцию на калькуляторах Да вы монстры ... весь текст скрыт [показать]
     
  • 2.4, Аноним, 12:58, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Насколько я помню, в Rust как выпилили простые легковесные потоки, так и не впил... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, Аноним, 14:04, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +2 +/
    Лол кек чебурек. И зачем нужны легковесные потоки в управлялке контейнерами?
     
     
  • 4.64, Аноним, 08:41, 26/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Ты ещё спроси: "а зачем они вообще нужны?!?!?!??!".
     
     
  • 5.65, Аноним, 12:36, 26/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Зачем мне это спрашивать?
     
  • 2.14, leap42, 16:38, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –2 +/
    Rust у уже 7 лет, а единственное что на нём было написано - это очередной вск... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Аноним, 16:57, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    На нем вообще-то целая Redox написана А вот что написано на go акромя всякой са... весь текст скрыт [показать]
     
     
  • 4.45, leap42, 04:02, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +4 +/
    типичный pet-проект у которого 0 пользователей
     
  • 4.54, Аноним, 16:20, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    писать системный софт на языке со сборкой мусора Ловите наркомана ... весь текст скрыт [показать]
     
     
  • 5.71, Аноним, 16:36, 28/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    А с malloc/new не проблема?
     
  • 3.28, Вы забыли заполнить поле Name, 19:33, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    https://wiki.mozilla.org/Quantum
     
     
  • 4.46, leap42, 04:04, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Quantum - замена Gecko, но Gecko пока никуда не делся, так что ещё не готово
     
     
  • 5.56, Вы забыли заполнить поле Name, 20:51, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Там же написано, что это не замена Они внедряют наработки в текущий gecko Напр... весь текст скрыт [показать]
     
  • 3.59, funny.falcon, 08:22, 25/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    На rust написано низкоуровневое ядро хранилища файлов в Dropbox Правда, высокоу... весь текст скрыт [показать]
     
  • 2.60, Аноним, 08:36, 25/09/2017 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –1 +/
    Go потому что рулит.
     
  • 1.5, Аноним, 13:13, 23/09/2017 [ответить] [смотреть все]     [к модератору]  
  • –7 +/
    , серьезно Ещё одна компания решила реализовать управление контейнерами на я... весь текст скрыт [показать]
     
     
  • 2.7, Аноним, 14:05, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Видимо, в этом такой же смысл, как писать на эзотерических языках программиров... весь текст скрыт [показать] [показать ветку]
     
  • 2.8, Аноним, 14:52, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Некоторые до сих пор пишут под виндовс... а там с форком вообще беда...
     
  • 2.9, anonymous, 15:00, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Для того, чтобы запустить сервис под systemd не нужны эти доисторические кривлян... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.12, Аноним, 15:39, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Гы, форк нужен не только чтобы запускать сервис,посмотри на работающий nginx, на... весь текст скрыт [показать]
     
     
  • 4.13, Анонимы, 15:52, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +4 +/
    тсс, а то потеринг вызов примет
     
  • 3.55, Аноним, 16:24, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    открою страшную тайну: в самом systemd используется fork
     
  • 2.15, leap42, 16:46, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    дорогой аноним, вот объясни мне тёмному - зачем тебе fork форкаться на каждый к... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Аноним, 16:55, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Как будто этот твой горУтин умеет что-то большее, чем позволяет ядро Чем POSIX ... весь текст скрыт [показать]
     
     
  • 4.51, анон, 12:51, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Posix thread требует больше памяти чем потоки, в остальном не плох.
     
  • 3.18, Аноним, 16:58, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ммм, и что будет Объясни мне тёмному как вырастет производительность от того чт... весь текст скрыт [показать]
     
     
  • 4.40, Онаним, 00:47, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Присоединяюсь к вопросу
     
     
  • 5.57, й, 22:18, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    man context switching передача контроля от одного процесса другому -- это опред... весь текст скрыт [показать]
     
     
  • 6.61, пох, 18:59, 25/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    не хотел бы тебя огорчать, но context switching, как явствует из названия, не со... весь текст скрыт [показать]
     
     
  • 7.62, й, 19:10, 25/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    во-первых, открываем гугль про context switching - A context switch also so... весь текст скрыт [показать]
     
     
  • 8.68, пох, 23:29, 26/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    с каких пор мусор из гугля является авторитетным мнением Его такие же как ты пи... весь текст скрыт [показать]
     
     
  • 9.70, й, 12:11, 27/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    погугли уже c10k problem и не позорься ... весь текст скрыт [показать]
     
  • 4.69, nonemo, 11:13, 27/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    переключение контекста происходит в сотни раз дольше, чем вызов - возврат в рамк... весь текст скрыт [показать]
     
     
  • 5.72, пох, 16:02, 30/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    проблема в том, что содержательный процесс после этого, не поверишь, норовит сам... весь текст скрыт [показать]
     
  • 3.19, Аноним, 17:20, 23/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +7 +/
    Ололо. Дорогой leap42, расскажите же мне, как работают контейнеры, не создавая процессы.
     
     
  • 4.32, Ordu, 20:22, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Ты действительно веришь в то, что стандартная библиотека go не позволяет создава... весь текст скрыт [показать]
     
  • 3.31, Аноним, 19:58, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Т е там будут все контейнеры в одном процессе и этим вашим гарутиным что-то дел... весь текст скрыт [показать]
     
     
  • 4.39, Аноним, 00:26, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    У нас в с тоже есть контейнеры std vector, std map, std list и всякие друг... весь текст скрыт [показать]
     
     
  • 5.48, Аноним, 08:03, 24/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    зачетный вброс, прямо поржали
     
  • 5.67, Добрый анон, 18:32, 26/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А у нас с другой стороны, в Го, например, есть сборка мусора, так что контейнеры... весь текст скрыт [показать]
     
  • 2.22, Аноним, 17:45, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    вообще то в go есть fork, но только это не тот fork из libc Вопрос в другом, ва... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, ваш К.О., 19:40, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    fork - это, мягко говоря, не совсем сисколл самое смешное, что в линуксе for... весь текст скрыт [показать]
     
     
  • 4.41, Аноним, 02:09, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    ну это вы про glibc Я вообще веду к тому что отсутствие в go форка к которому м... весь текст скрыт [показать]
     
     
  • 5.52, ., 14:28, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    это смотря что на нем делать - если просто контейнер или любой другой процесс ... весь текст скрыт [показать]
     
  • 1.21, Аноним, 17:37, 23/09/2017 [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    37мб на машину, это только накладные расходы, вообщем маркетинговая чушня, как о... весь текст скрыт [показать]
     
     
  • 2.26, Аноним, 18:26, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    CoW? Не, не слышал.
     
     
  • 3.33, ksksfcc, 20:27, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Что случится когда все виртуалки запустят по процессу обработки с различными дан... весь текст скрыт [показать]
     
     
  • 4.37, пох, 22:42, 23/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    ровно то же самое, что случилось бы, если бы процессы запускались просто в одной... весь текст скрыт [показать]
     
     
  • 5.43, Аноним, 03:03, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    128 гб накладных расходов на 3500 процессов обработки данных Спасибо, но нам та... весь текст скрыт [показать]
     
     
  • 6.53, пох, 14:35, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    ну, значит, вам не нужно , живите без изоляции этих процессов или с ее бесполез... весь текст скрыт [показать]
     
  • 3.42, Аноним, 02:12, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    конечно слышал, вот только CoW c изолированными окружениями работает не так как ... весь текст скрыт [показать]
     
     
  • 4.49, Аноним, 10:20, 24/09/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Откуда ты так хорошо знаешь, что я себе представляю Там чуть пониже цитату прив... весь текст скрыт [показать]
     
  • 1.25, Аноним, 18:26, 23/09/2017 [ответить] [смотреть все]    [к модератору]  
  • –3 +/
    О запуске графических приложениях, полагаю, не может быть и речи?
     
  • 1.36, Stax, 22:38, 23/09/2017 [ответить] [смотреть все]    [к модератору]  
  • +/
    Посмотрел доки и так и не понял, память может свободно разделяться между контейнерами или нет? Т.е. пусть у нас 4 ГБ памяти всего, два контейнера, сейчас один потребляет 1 ГБ, а второй 2 ГБ, потом первый потребляет 2 ГБ, а второй 1 ГБ - без переконфигурации. Потому что overcommiting + memory ballooning на виртуалках все равно не дает такой эффективности, как общая память между контейнерами (ну а лимиты навешать никогда не проблема).

    Еще смущает, что на https://lwn.net/Articles/644675/ в комментариях утверждают, что непонятно, как добиться заявленного оверхеда в 20 МБ на контейнер, по факту выходит 60.

     
     
  • 2.38, Аноним, 23:16, 23/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    по той же ссылке на lwn net написано gt оверквотинг удален На всякий случай е... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.66, Stax, 18:05, 26/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Я это видел, но не вижу тут ответа на вопрос.

    Во-первых, мне в целом без разницы, zero-copy или нет - интересует, освобождаемая программой в таком контейнере память тут же возвращается в хост-систему и доступна другим контейнерам или нет?
    Во-вторых, а что с обычным malloc (когда размер аллокации недостаточен, чтобы он переключался на mmap).

     
  • 1.44, Аноним, 03:06, 24/09/2017 [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Для тех кто не понял цифры 128гб это и есть объем накладных расходов 3500 вирту... весь текст скрыт [показать]
     
     
  • 2.47, Аноним, 04:27, 24/09/2017 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Калькулятор не осилил?
     
     
  • 3.63, jsjf, 20:47, 25/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Выложите свои вычисления, нам всем очень интересно будет посмотреть.
     
  • 2.50, Аноним, 10:23, 24/09/2017 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    Как-то не так я, видимо, истолковал фразу Или всё-таки ты ... весь текст скрыт [показать] [показать ветку]
     

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


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