Компания Amazon представила (https://aws.amazon.com/ru/blogs/opensource/firecracker-open-... новую технологию виртуализации Firecracker (https://firecracker-microvm.github.io/), обеспечивающую работу виртуальных машин с минимальными накладными расходами. Платформа предоставляет средства для создания и управления изолированными окружениями и сервисами, построенными с использованием бессерверной модели (https://ru.wikipedia.org/wiki/%D0%91%D0%... разработки. Код проекта написан на языке Rust и распространяется (https://github.com/firecracker-microvm/firecracker/) под лицензией Apache 2.0.
Firecracker предоставляет для запуска задач легковесные виртуальные машины, именуемые microVM, для полноценной изоляции которых применяются технологии аппаратной виртуализации, но при этом обеспечивается производительность и гибкость на уровне обычных контейнеров. Основу Firecracker составляет монитор виртуальных машин (VMM), использующий встроенный в ядро Linux гипервизор KVM.
VMM основан на наработках написанного на языке Rust проекта crosvm (https://chromium.googlesource.com/chromiumos/platform/crosvm/), развиваемого (https://www.opennet.ru/opennews/art.shtml?num=48563) компанией 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-систем (Функция как услуга (https://ru.wikipedia.org/wiki/%D0%A4%D1%... предлагающих модель бессерверных вычислений.
Суть метода FaaS заключается в том, что разработчик реализует логику на уровне отдельных функций, не заботясь о создании и управлении инфраструктурой для запуска приложений, и не привязываясь к конкретным серверным приложениям и необходимым для их работы облачным окружениям. Разработка ведётся без создания монолитных приложений, на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС).
Функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу, т.е. в отличие от микросервисов не требуется постоянное наличие запущенных окружений, потребляющих ресурсы на холостом ходу. FaaS-платформа сама размещает подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения подготовленных функций.
URL: https://aws.amazon.com/ru/blogs/opensource/firecracker-open-.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=49667