Amazon открыл код легковесной платформы виртуализации Firecracker

Компания Amazon представила новую технологию виртуализации Firecracker, обеспечивающую работу виртуальных машин с минимальными накладными расходами. Платформа предоставляет средства для создания и управления изолированными окружениями и сервисами, построенными с использованием бессерверной модели разработки. Код проекта написан на языке Rust и распространяется под лицензией Apache 2.0.

Firecracker предлагает легковесные виртуальные машины, именуемые microVM, для полноценной изоляции которых применяются технологии аппаратной виртуализации, но при этом обеспечивается производительность и гибкость на уровне обычных контейнеров. Основу Firecracker составляет монитор виртуальных машин (VMM), использующий встроенный в ядро Linux гипервизор KVM. VMM основан на наработках написанного на языке Rust проекта crosvm, развиваемого компанией Google для запуска Linux в ChromеOS. В настоящее время кодовые базы crosvm и Firecracker разделились, но Amazon планирует передавать в upstream исправления, вносимые в заимствованные компоненты.

Выполняемое внутри виртуальных машин программное окружение урезано и содержит только минимальный набор компонентов. Для экономии памяти, сокращения времени запуска и повышения безопасности в окружениях запускается модифицированное ядро Linux, из которого исключено всё лишнее, в том числе сокращена функциональность и урезана поддержка устройств. При запуске с урезанным ядром дополнительный расход памяти по сравнению с контейнером составляет менее 5 Мб. Время с момента запуска microVM до начала выполнения приложения не превышает 125мс. MicroVM могут создаваться с интенсивностью до 150 окружений в секунду.
Возможен запуск в виртуальных машинах microVM и обычных окружений на базе штатного ядра Linux (поддерживаются системы с ядром 4.14 и новее).

Для управления виртуальными окружениями в пространстве пользователя выполняется фоновый процесс Virtual Machine Manager, предоставляющий RESTful API, реализующий следующие функции:

  • Настройка microVM, выбор шаблонов CPU (C3 и T2), определение числа виртуальных процессоров (vCPU) и размера памяти;
  • Добавление сетевых интерфейсов в microVM;
  • Добавление дисковых разделов в microVM, доступных как на запись, так и в режиме только для чтения. В хост окружении разделы сохраняются в отдельных файлах (симуляция блочного устройства в файле);
  • Обновление параметров блочных устройств без остановки работы виртуальной машины (например, для изменения размера раздела);
  • Изменение файлов для блочных устройств до или после загрузки гостевой системы;
  • Задание ограничений на пропускную способность и интенсивность выполнения операций для устройств virtio;
  • Настройка отражения информации в логах и сохранение метрик для мониторинга;
  • Добавление сокетов vsock в microVM;
  • Запуск microVM с указанным ядром и образом корневой ФС и настройками. Остановка работы microVM;
  • Из встроенных возможностей отмечается предоставление дополнительной памяти и мощностей CPU в случае нехватки предоставленных ресурсов, а также запуск фонового процесса в режиме изоляции со сбросом привилегий и применением cgroup/namespace/seccomp.

Проект разработан в подразделении Amazon Web Services с целью повышения производительности и эффективности работы платформ AWS Lambda и AWS Fargate. Для Firecracker подготовлены runtime-модули для интеграции c популярными инструментариями для управления изолированными контейнерами. Ожидается появление поддержки таких платформ, как Kubernetes, Docker и Kata Containers. Первичной областью применения платформы называется создание FaaS-систем (Функция как услуга), предлагающих модель бессерверных вычислений.

Суть метода бессерверных вычислений заключается в том, что разработчик реализует логику на уровне отдельных функций, не заботясь о создании и управлении инфраструктурой для запуска приложений, и не привязываясь к конкретным серверным приложениям и необходимым для их работы облачным окружениям. Разработка ведётся без создания монолитных приложений на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС).

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.