我们的使命是实现安全、多租户、低开销的容器和函数工作负载执行。
在这里阅读更多关于 Firecracker 章程的信息。
Firecracker 是什么?
Firecracker 是一个开源虚拟化技术,专为创建和管理安全、多租户的容器和基于函数的服务而设计,这些服务提供无服务器运营模式。Firecracker 在轻量级虚拟机(称为 microVM)中运行工作负载,结合了硬件虚拟化技术提供的安全性和隔离性,以及容器的速度和灵活性。
概述
Firecracker 的主要组件是一个虚拟机监视器(VMM),它使用 Linux 内核虚拟机(KVM)来创建和运行 microVM。Firecracker 采用极简设计,排除了不必要的设备和面向客户的功能,以减少每个 microVM 的内存占用和攻击面。这提高了安全性,缩短了启动时间,并提高了硬件利用率。Firecracker 还已集成到容器运行时中,例如 Kata Containers 和 Flintlock。
Firecracker 由亚马逊网络服务开发,旨在加快 AWS Lambda 和 AWS Fargate 等服务的速度和效率。Firecracker 根据 Apache 2.0 版本 开源。
要了解更多关于 Firecracker 的信息,请查看 firecracker-microvm.io。
入门
要开始使用 Firecracker,请下载最新的发布版本二进制文件或从源代码构建。
你可以在任何运行 Docker(我们使用开发容器)并安装了 bash
的 Unix/Linux 系统上构建 Firecracker,如下所示:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Firecracker 二进制文件将位于 build/cargo_target/${toolchain}/debug/firecracker
。有关构建、测试和运行 Firecracker 的更多信息,请查看快速入门指南。
Firecracker microVM 的整体安全性,包括满足安全多租户计算标准的能力,取决于配置良好的 Linux 主机操作系统。我们认为满足这一标准的配置包含在生产主机设置文档中。
贡献
Firecracker 已经在 AWS 内部运行生产工作负载,但在我们使命指引的旅程中,这仍然只是第一天。还有很多要构建的,我们欢迎所有的贡献。
要为 Firecracker 做出贡献,请查看入门指南中的开发设置部分,然后查看 Firecracker 贡献指南。
发布
新的 Firecracker 版本通过 GitHub 仓库的发布页面发布,通常每两到三个月一次。变更历史记录在我们的更新日志中。
Firecracker 的发布政策详见此处。
设计
Firecracker 的整体架构在设计文档中有描述。
特性与功能
Firecracker 由一个单一的微型虚拟机管理器进程组成,启动后向主机公开 API 端点。API 以 OpenAPI 格式指定。在 API 文档中了解更多信息。
API 端点可用于:
- 通过以下方式配置 microvm:
- 设置 vCPU 数量(默认为 1)。
- 设置内存大小(默认为 128 MiB)。
- 配置 CPU 模板。
- 向 microVM 添加一个或多个网络接口。
- 向 microVM 添加一个或多个读写或只读磁盘,每个磁盘由文件支持的块设备表示。
- 在客户机运行时触发块设备重新扫描。这使客户操作系统能够获取块设备后备文件的大小变化。
- 在客户机启动前后更改块设备的后备文件。
- 为 virtio 设备配置速率限制器,可以限制带宽、每秒操作数或两者兼有。
- 配置日志和指标系统。
[测试版]
配置面向客户的元数据服务的数据树。只有在配置此资源时,服务才对客户可用。- 向 microVM 添加 vsock 套接字。
- 向 microVM 添加熵设备。
- 使用给定的内核镜像、根文件系统和启动参数启动 microVM。
- [仅限 x86_64] 停止 microVM。
内置功能:
- 默认启用按需页面错误和 CPU 超额订阅。
- 高级的、线程特定的 seccomp 过滤器,以增强安全性。
- Jailer 进程用于在生产场景中启动 Firecracker;应用 cgroup/namespace 隔离屏障,然后放弃特权。
测试平台
我们测试以下所有组合:
实例 | 主机操作系统和内核 | 客户根文件系统 | 客户内核 |
---|---|---|---|
c5n.metal | al2 linux_5.10 | ubuntu 22.04 | linux_4.14 |
m5n.metal | al2023 linux_6.1 | linux_5.10 | |
m6i.metal | |||
m6a.metal | |||
m6g.metal | |||
m7g.metal |
已知问题和限制
- aarch64 上的
pl031
RTC 设备不支持中断,因此使用 RTC 闹钟的客户程序(如hwclock
)将无法工作。
性能
Firecracker 的性能特征作为规范文档的一部分列出。所有规范都是我们支持无服务器运营模式下的容器和函数工作负载的承诺的一部分,因此通过持续集成测试强制执行。
安全披露政策
Firecracker 的安全性是我们的首要任务。如果你怀疑发现了漏洞,请按照我们的安全政策文档中概述的方式私下联系我们;我们将立即优先处理你的披露。
常见问题解答和联系方式
常见问题解答收集在我们的 FAQ 文档中。
你可以通过以下方式与 Firecracker 社区联系:
- 安全相关问题,请参阅我们的安全政策文档。
- 在我们的 Slack 工作区与我们聊天。 注意:大多数维护者处于欧洲时区。
- 在此存储库中开启 GitHub 问题。
- 发送电子邮件至 firecracker-maintainers@amazon.com 联系维护者。
在 Firecracker 社区内沟通时,请遵守我们的行为准则。