【Linux】firecracker部署实践

1.引言

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

Firecracker 是一种采用基于 Linux 内核的虚拟机 (KVM) 技术的开源虚拟机监控程序(VMM)Firecracker允许您创建微型虚拟机,即 microVM。Firecracker坚持精简主义的设计原则,它仅包含运行安全、轻量的虚拟机所需的组件。在设计过程的各个环节,AWS 依据安全性、速度和效率要求来优化
Firecracker。例如,仅启动相对较新的 Linux 内核,并且仅启动使用特定配置选项集编译的内核(内核编译配置选项超过 1000 种)。此外,不支持任何类型的图形卡或加速器,不支持硬件透传,不支持(大多数)老旧设备。

Firecracker启动的内核配置极少,不依赖仿真BIOS,不使用完整设备模式。唯一的设备是半虚拟化网卡和半虚拟化硬盘,以及单按钮键盘(复位引脚在无电源管理设备时使用)。这种极简的设备模式不仅有利于缩短开机时间(采用默认microVM 型号的 i3.metal 实例开机时间 < 125 毫秒),同时也减少了***面,从而提高了安全性。请参阅有关Firecracker 承诺支持以极低的开销执行容器和无服务器工作负载的更多信息。

2017 年秋,AWS 决定以 Rust 语言来编写Firecracker,这是一种非常先进的编程语言,可保证线程和内存安全,防止缓存溢出以及可能导致安全性漏洞的许多其他类型的内存安全问题。请访问
Firecracker 设计以了解有关 Firecracker VMM 功能和架构的更多详细信息。

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

Firecracker microVM提高了效率和利用率,内存开销极低,每 microVM 的内存开销 < 5MiB。这意味着用户可以将数千个 microVM封装到一个虚拟机中。可以使用进程中速率限制器来实现对网络和存储资源的共享方式的精细控制,即使跨数千个 microVM也同样可行。所有硬件计算资源可以安全地超订,从而最大化可以在主机上运行的工作负载数量。

2.安装firecracker

dnf install firecracker

在这里插入图片描述

2.1.配置firecracker

修改/dev/kvm权限

chmod 777 /dev/kvm

终端执行firecracker运行命令

 firecracker --api-sock /tmp/firecracker.sock

注意:
下面操作步骤打开一个新的终端来执行操作:
查看firecracker的进程是否在运行:

ps -ef |grep firecracker

在这里插入图片描述

查看内存占用情况:

cat /proc/424231/status |grep VmRSS

在这里插入图片描述

修改vcpu和内存

curl --unix-socket /tmp/firecracker.sock "http://localhost/machine-config"

在这里插入图片描述

这将启动一个 VMM 进程并等待 microVM 配置。默认情况下,每个 microVM 将分配一个 vCPU 和 128MiB内存,如果需要修改 vCPU 和内存大小,可以向 microVM 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": 2,
        "mem_size_mib": 4096,
        "ht_enabled": false
    }'

在这里插入图片描述

2.2.设置启动系统内核和根目录

现在此 microVM 需要使用解压后的 Linux 内核二进制代码和将用作根文件系统的 ext4 文件系统来进行配置。

下载示例内核和rootfs:

curl -fsSL -o hello-vmlinux.bin https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin
curl -fsSL -o hello-rootfs.ext4 https://s3.amazonaws.com/spec.ccfc.min/img/hello/fsfiles/hello-rootfs.ext4

在这里插入图片描述

设置来宾内核:

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
    }'

在这里插入图片描述

2.3.启动microVM

配置好内核和根文件系统后,将会启动来宾虚拟机:

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"
  }'

在这里插入图片描述

注意:
执行完成上述命令后,切换刚才的终端发现有输出内容。
在这里插入图片描述

登陆microVM,到最后输出会看到让你登陆输入用户和密码。

microVM用户和密码都是“root”
在这里插入图片描述

测试验证操作:

ls /

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白鸽i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值