大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

AWS 开源 Firecracker,一种运行多租户容器服务的新虚拟化技术

  • 2018-11-27
  • 本文字数:2683 字

    阅读完需:约 9 分钟

AWS开源Firecracker,一种运行多租户容器服务的新虚拟化技术

现在的技术环境下,容器具有快速启动时间和高密度,VM 可以对硬件虚拟化,具有更好的安全性,并对工作负载具有更好的隔离性。容器和 VM 的特性现在还不可兼得。


现在 AWS 开源了 Firecracker,一种利用 KVM 的新虚拟化技术,专门用于创建和管理多租户容器以及基于函数的服务。 你可以在几分之一秒内在非虚拟化环境中启动轻量级微虚拟机(microVM),充分利用传统虚拟机提供的安全性和工作负载隔离,同时兼具容器的资源效率。


Firecracker 实现了一个虚拟机监视器(virtual machine monitor,VMM),它使用基于 Linux 内核的虚拟机(KVM)来创建和管理 microVM。 Firecracker 为客户操作系统提供了最少的所需设备模型,同时排除了非必要功能(仅有 4 个模拟设备:virtio-net,virtio-block,串行控制台和仅有一个按键的键盘控制器,用于停止 microVM)。


由于设备模型极简,内核加载过程也简单,可以实现小于 125 ms 的启动时间和更少的内存占用。Firecracker 目前支持 Intel CPU,并将于 2019 年开始支持 AMD 和 ARM,还将与 containerd 等流行的容器运行时集成。Firecracker 支持内核版本为 4.14 及更高版本的 Linux 主机和客户机操作系统。


Firecracker 由 AWS 的开发人员构建,旨在使 AWS Lambda 和 AWS Fargate 等服务能够提高资源利用率和客户体验,同时提供公有云基础架构所需的安全性和隔离性。Firecracker 采用 Rust 编写,Rust 是一种现代编程语言,可以保证线程安全并防止可能导致安全漏洞的多种类型的缓冲区溢出错误。


下图展示了一台主机如何运行 Firecracker microVM:



Firecracker 在用户空间中运行,使用基于 Linux 内核的虚拟机(KVM)来创建 microVM。每个 microVM 的快速启动时间和低内存开销使你可将数千个 microVM 打包到同一台机器上。这意味着每个函数或容器组都可以使用虚拟机屏障进行封装,从而使不同用户的工作负载能在同一台计算机上运行,而无需在安全性和效率之间进行权衡。Firecracker 是 QEMU 的替代品,QEMU 是一个成熟的 VMM,具有通用和广泛的功能集,可以托管各种客户操作系统。


可以通过 RESTful API 控制 Firecracker 进程,RESTful API 可以启用常见操作:例如配置 vCPU 数量或启动计算机。Firecracker 提供内置速率限制器,可精确控制同一台计算机上数千个 microVM 使用的网络和存储资源。你可以通过 Firecracker API 创建和配置速率限制器,并灵活定义速率限制器来支持突发情况或特定带宽/操作限制。Firecracker 还提供元数据服务,可在主机和客户机操作系统之间安全地共享配置信息。元数据服务可以使用 Firecracker API 设置。


Firecracker 现在还不能在 Kubernetes、Docker 或 Kata Container 上使用。Kata Container 是一个符合 OCI 标准的容器运行时,在基于 QEMU 的虚拟机中执行容器。Firecracker 是 QEMU 的云原生替代品,专门用于安全高效地运行容器,这是 Firecracker 和 Kata Container 以及 QEMU 之间的区别。


Firecracker 的优势如下:


  • 安全 - Firecracker 使用多级隔离和保护,并暴露出最小的攻击面。

  • 高性能 - 可以在短至 125 毫秒内启动 microVM(在 2019 年可以更快),使其成为众多工作负载类型的理想选择,包括瞬态或短期工作负载。

  • 久经沙场 - Firecracker 经过了很多测试,已经为包括 AWS Lambda 和 AWS Fargate 在内的多个高容量 AWS 服务提供支持。

  • 低开销 - Firecracker 每个 microVM 消耗大约 5 MiB 的内存。你可以在同一实例上运行数千个具有不同 vCPU 和内存配置的安全 VM。

  • 开源 - Firecracker 是一个开源项目。AWS 已经准备好审核并接受拉取请求。


Firecracker 的安全功能包括:


  • 简单客户机模型 - Firecracker 客户端提供了一个非常简单的虚拟化设备模型,以最小化攻击面:只有网络设备,block I / O 设备,可编程定时器,KVM 时钟,串行控制台和一个不完全的 键盘(刚好足以让 VM 重置)。

  • 进程监狱 - 使用 cgroups 和 seccomp BPF 对 Firecracker 进程进行监禁,并且可以访问一个严格控制的小型系统调用列表。

  • 静态链接 - Firecracker 进程是静态链接的,可以从进程监狱中启动,以确保主机环境尽可能安全和干净。

开启 Firecracker

示例启动了一个 i3.metal 实例并下载了三个文件(firecracker二进制文件,一个根文件系统镜像和一个 Linux 内核):



设置访问/ dev / kvm的适当权限:


$  sudo setfacl -m u:${USER}:rw /dev/kvm
复制代码


在一个 PuTTY 会话中启动 Firecracker,然后在另一个 PuTTY 会话中发出命令(该进程侦听 Unix 域套接字并实现一个 REST API)。 第一个命令设置第一台客户机的配置:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/machine-config" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"vcpu_count\": 1,        \"mem_size_mib\": 512    }"
复制代码


第二个命令设置 guest kernel:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/boot-source" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"kernel_image_path\": \"./hello-vmlinux.bin\",        \"boot_args\": \"console=ttyS0 reboot=k panic=1 pci=off\"    }"
复制代码


第三个命令设置根文件系统:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/drives/rootfs" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"drive_id\": \"rootfs\",        \"path_on_host\": \"./hello-rootfs.ext4\",        \"is_root_device\": true,        \"is_read_only\": false    }"
复制代码


所有都设置好以后,能启动一台客户机:


# curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/actions" \    -H  "accept: application/json" \    -H  "Content-Type: application/json" \    -d "{        \"action_type\": \"InstanceStart\"     }"
复制代码


第一个 VM 已经起来并可以运行了:



参考链接:


https://firecracker-microvm.github.io/


https://amazonaws-china.com/cn/blogs/aws/firecracker-lightweight-virtualization-for-serverless-computing/


Firecracker 开源地址:https://github.com/firecracker-microvm/firecracker

活动推荐


12 月 7 日北京 ArchSummit 全球架构师峰会上,来自阿里、京东、Streamlio 的讲师齐聚一堂,共同分享“Apache Pulsar 解决运维痛点”、“Dubbo 应用实践”和“Flutter 在京东的实践效果”等开源技术相关经验与实践。详情点击 https://bj2018.archsummit.com/schedule


2018-11-27 16:583810
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 56.1 次阅读, 收获喜欢 218 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

Elasticsearch向量检索的演进与变革:从基础到应用

汀丶人工智能

自然语言处理 Elastic Search 语义搜索系统 向量搜索

AI干货大FUN送!程序员节来AI Show“集市”行乐

飞桨PaddlePaddle

AI 程序员节

是时候了!MySQL 5.7 的下一站,不如试试 TiDB?

TiDB 社区干货传送门

MacOS系统设置一键切换开关 One Switch

展初云

Mac软件 一键开关

小间距LED显示屏的技术优势有哪些?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

页面查询多项数据组合的线程池设计 | 京东云技术团队

京东科技开发者

线程池 分页查询 企业号10月PK榜 数据组合

Mac平台好用的文件对比工具 Beyond Compare 4

展初云

Mac软件 Beyond Compare 4 for Mac 文件对比工具

软件依赖管理-源码依赖、接口依赖、服务依赖

laofo

DevOps cicd 研发效能 持续交付

把您的 PCB 艺术品带来 KiCon 吧:SAO Hat 作品招募中

华秋电子

kicad

Markdown文本写作软件 Ulysses for Mac

展初云

markdown Mac软件 写作软件

实用的数据集成方式

谷云科技RestCloud

数据同步 ETL 实时数据

PCB打板省钱小妙招,强烈建议收藏!

华秋电子

PCB

火山引擎DataTester:AB测试技术揭秘及应用分享

字节跳动数据平台

大数据 ab测试 对比实验 数字化增长 企业号10月PK榜

软件测试|火焰杯”软件测试高校就业选拔赛获奖名单揭晓,我院两名学子上榜,奖金2万元!

霍格沃兹测试开发学社

互动直播双11大促开启!!!快来! | 京东云技术团队

京东科技开发者

互动直播 数字人 企业号10月PK榜 AI直播

TiDB 社区第三届 1024 程序员心愿节|你的心愿,我来实现,人均带着一个礼物的时刻到啦!

TiDB 社区干货传送门

注释在编程中的重要性:理解程序员的两难选择

小魏写代码

基于 Apache Kyuubi 实现分布式 Flink SQL 网关

网易数帆

大数据 flink 开源 Apache Kyuubi

SMT组装工艺流程的应用场景

华秋电子

SMT

MySQL Command Line Client登录 及系统设置

小齐写代码

第2期 | GPTSecurity周报

云起无垠

软件测试|计算机系本科生获“火焰杯”软件测试高校就业选拔赛一等奖

霍格沃兹测试开发学社

CNCF即将推出平台成熟度模型丨亮点导览

SEAL安全

运维 成熟度模型 企业号10月PK榜

邯郸学院软件学院软件工程专业教师参加“火焰杯”软件测试颁奖

测试人

软件测试

Flink OLAP 在字节跳动的查询优化和落地实践

Apache Flink

大数据 flink 实时计算

手机端侧文字识别:挑战与解决方案

合合技术团队

人工智能 技术 手机 识别

京东小程序平台助力快送实现跨端 | 京东云技术团队

京东科技开发者

小程序 ide 跨端 企业号10月PK榜

多模态GPT-V出世!36种场景分析ChatGPT Vision能力,LMM将全面替代大语言模型? | 京东云技术团队

京东科技开发者

人工智能 LLM模型 企业号10月PK榜 GPT-V

AWS开源Firecracker,一种运行多租户容器服务的新虚拟化技术_容器_张婵_InfoQ精选文章