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

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

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

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

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

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


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

В новой версии:

  • Помимо поддержки архитектуры AMD64 (x86_64) обеспечено формирование релизов для архитектур ARM64 (Aarch64) и s390 (IBM Z). В разработке находится поддержка архитектуры ppc64le (IBM Power).
  • Для организации доступа к образам контейнеров задействована файловая система Nydus 2.2.0, в которой используется адресация по содержимому для эффективной совместной работы с типовыми образами. Nydus поддерживает загрузку образов на лету (загружает только при возникновении необходимости), обеспечивает дедупликацию повторяющихся данных и может использовать разные бэкенды для фактического хранения. Предоставляется совместимость с POSIX (по аналогии с Composefs, реализация Nydus совмещает возможности OverlayFS c EROFS или FUSE-модулем).
  • В основной состав проекта Kata Containers интегрирован менеджер виртуальных машин Dragonball, который теперь будет развиваться в общем репозитории.
  • В утилиту kata-ctl добавлена отладочная функция для подключения к виртуальной машине из хост-окружения.
  • Расширены возможности по управлению GPU и добавлена поддержка проброса GPU в контейнеры для конфиденциальных вычислений (Confidential Container), в который обеспечивается шифрование данных, памяти и состояния выполнения для защиты в случае компрометации хост-окружения или гипервизора.
  • В Runtime-rs добавлена подсистема управления устройствами, используемыми в контейнерах или sandbox-окружениях. Поддерживается работа с vfio, блочными, сетевыми и другими типами устройств.
  • Обеспечена совместимость с OCI Runtime 1.0.2 и Kubernetes 1.23.1.
  • В качестве ядра Linux рекомендовано использовать выпуск 6.1.38 с патчами.
  • Разработка переведена с использования системы непрерывной интеграции Jenkins на GitHub Actions.

Release. Ссылка here.