Выпуск Kata Containers 1.0 с изоляцией на основе виртуализации

Состоялся первый выпуск проекта Kata Containers, в рамках которого развивается стек для организации выполнения контейнеров с использованием изоляции на базе полноценных механизмов виртуализации, созданный компаниями Intel и Hyper путём объединения технологий Clear Containers и runV. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Развитие проекта курирует рабочая группа, созданная под эгидой независимой организации OpenStack Foundation, в которой участвуют такие компании, как Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE и ZTE.

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

Kata Containers ориентирован на интеграцию в существующие инфраструктуры контейнерной изоляции c возможностью применения подобных виртуальных машин для усиления защиты традиционных контейнеров. Проектом предоставляются механизмы для обеспечения совместимости легковесных виртуальных машины с различными инфраструктурами контейнерной изоляции, платформами оркестровки контейнеров и спецификациями, такими как OCI (Open Container Initiative), CRI (Container Runtime Interface) и CNI (Container Networking Interface). Доступны средства для интеграции с Docker, Kubernetes, QEMU и OpenStack.

0_1512988814.png

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

Системное окружение включает в себя только демон инициализации и агент (Аgent). Агент обеспечивает выполнение определённых пользователем образов контейнера в формате OCI для Docker и CRI для Kubernetes. При использовании совместно с Docker для каждого контейнера создаётся отдельная виртуальная машина, т.е. запускаемое поверх гипервизора окружение применяется для вложенного запуска контейнеров.

В условиях выполнения большого числа типовых окружений, накладные расходы на каждое последующее окружение составляет 18–20 Мб, что даёт возможность уместить 3500 виртуальных машин на сервере с 128 Гб ОЗУ. Окружение запускается менее, чем за 100ms, что позволяет использовать Kata Containers для запуска контейнера с приложениями на лету, в моменты, когда в них возникает необходимость. В качестве гипервизора по умолчанию предлагается использовать KVM в сочетании с инструментарием QEMU, но проект изначально позиционируется как не привязанный к конкретным архитектурам и способный работать с различными гипервизорами (например, Xen).

Для уменьшения потребления памяти применяется механизм DAX (прямой доступ к ФС в обход страничного кэша без применения уровня блочных устройств), а для дедупликации одинаковых областей памяти применяется технология KSM (Kernel Samepage Merging), что позволяет организовать совместное использование ресурсов хост-системы и подключить к разным гостевым системам общий шаблон системного окружения.

© OpenNet