歡迎來到夸克容器。
該存儲庫是 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]
要了解有關使用郵件列表的更多信息,請參閱郵件列表禮儀。