欢迎来到夸克容器。
该存储库是 Quark 容器代码的所在地。
Quark Container 是高性能安全容器运行时,具有以下功能:
性能切片是 Performance.pdf。详细测试步骤和结果在这里
Quark Container 采用经典的 Linux 虚拟机架构,如下所示。它包括一个名为 QVisor 的 HyperVisor 和一个名为 QKernel 的来宾内核。与常见的 Linux 虚拟机设计不同,Linux/Windows 等标准操作系统映像可以在 Qemu 上运行。 QVisor 和 QKernel 紧密耦合。 QVisor 仅支持 QKernel。
Quark Container 的高层设计如下。它通过以下步骤处理容器应用程序请求。
Quark Container 支持通过 RDMA 连接(即 TSoR)传输容器应用程序的 TCP 流量。 TSoR 是 K8S 集群中的容器网络提供商,现有的基于 TCP 的容器应用程序无需任何修改即可通过 RDMA 传输数据。由于 TSoR 将 TCP/IP 协议栈工作负载卸载到 RDMA NIC。它可以通过更少的 CPU 占用实现更高的吞吐量、低延迟。 TSOR 测试结果是 Quark + TSoR 与 RunC + Flannel 对比的 Redis 基准测试结果。 TSoR 的吞吐量比 Flannel 提高了 5 倍。 TSoR 架构如下。简介在这里
Quark 主要支持 X86-64。 aarch64 支持是初步的,正在积极开发中。将来还会推出其他架构。
Quark是用Rust语言开发的。构建需要每晚安装 Rust。请使用当前已知的良好版本nightly-2023-12-11-x86_64-unknown-linux-gnu
(对于 aarch64 版本,将x86_64
替换为aarch64
)
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
将 rust-src 组件添加到当前工具链:
rustup component add rust-src
并安装“cargo-xbuild”进行qkernel交叉编译
cargo install cargo-xbuild
安装libcap库
sudo apt-get install libcap-dev
另外,还有一些用于编译 RDMA 模块的额外库:
sudo apt-get install build-essential cmake gcc libudev-dev libnl-3-dev
libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3
python3-docutils pandoc libclang-dev
还有一些用于编译 GPU 模块的额外库:
(请注意,即使在非 nvidia 机器上,您也可以执行以下命令以获得编译 GPU 模块的能力。)
sudo apt-get install libelf-dev nvidia-driver-535
git clone [email protected]:QuarkContainer/Quark.git
cd Quark
make
make install
make cuda_all
make install
make install
时,它们都被复制到 /usr/local/bin/ 文件夹。 “quark”包含 QVisor 代码,它还实现了 OCI 接口。sudo mkdir /var/log/quark
sudo systemctl restart docker
hello-world docker 示例应用程序可以按如下方式执行:
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
Quark 容器的配置文件位于 /etc/quark/config.json 。配置细节待定...
Quark Container的调试日志放在/var/log/quark/quark.log中。它可以通过 /etc/quark/config.json 的“DebugLevel”启用或禁用。 “DebugLevel”有 5 个可能的值,如下所示。
Off,
Error,
Warn,
Info,
Debug,
Trace,
当启用日志时,例如调试。使用 Quark 容器运行 docker 镜像后,日志将在 /var/log/quark/quark.log 中生成。请参阅 wiki 了解更多调试技巧。
请参考此链接使用 quark 容器和 RDMA 支持设置 k8s。
Quark 现在已经有了初步的 aarch64 支持(仍在积极开发中)。
关于较新的 arm64 架构的注释:
较新的arm64架构在pstate中添加了PAN(从不特权访问)位,以防止内核(el1)访问用户(el0)内存。全面支持正在开发中。作为临时解决方法,我们只需清除 qkernel 中的 PAN。为此,您需要手动应用此补丁
~quark/[email protected]
即可使用 Quark 邮件列表。要订阅该列表,请发送一封空电子邮件至~quark/[email protected]
要了解有关使用邮件列表的更多信息,请参阅邮件列表礼仪。