Selamat datang di Kontainer Quark.
Repositori ini adalah rumah dari kode Quark Containers.
Quark Container adalah runtime container aman berkinerja tinggi dengan fitur berikut:
Irisan kinerjanya adalah performance.pdf. Langkah-langkah tes detail dan hasilnya ada di sini
Quark Container mengambil arsitektur Mesin Virtual Linux klasik seperti di bawah ini. Ini mencakup HyperVisor bernama QVisor dan kernel tamu bernama QKernel. Berbeda dengan desain Mesin Virtual Linux pada umumnya, di mana image OS standar seperti Linux/Windows dapat berjalan di Qemu. QVisor dan QKernel digabungkan dengan erat. QVisor hanya mendukung QKernel.
Desain tingkat tinggi Quark Container adalah seperti di bawah ini. Ini menangani permintaan Aplikasi Kontainer dengan langkah-langkah berikut.
Quark Container mendukung transfer lalu lintas TCP aplikasi container dengan koneksi RDMA, yaitu TSoR. TSoR adalah penyedia jaringan kontainer di cluster K8S dan aplikasi kontainer berbasis TCP yang ada dapat mentransfer data melalui RDMA tanpa modifikasi APAPUN. Saat TSoR memindahkan beban kerja tumpukan protokol TCP/IP ke RDMA NIC. Hal ini dapat mencapai throughput yang lebih tinggi, latensi rendah dengan jejak CPU yang lebih sedikit. Hasil pengujian TSOR merupakan hasil pengujian benchmark Redis dengan perbandingan antara Quark + TSoR dan RunC + Flannel. TSoR menunjukkan peningkatan throughput 5 kali lipat dibandingkan Flanel. Arsitektur TSoR seperti di bawah ini. Pengenalannya ada di sini
Quark terutama mendukung X86-64. dukungan aarch64 masih dalam tahap awal dan sedang dalam pengembangan aktif. Arsitektur lain akan tersedia di masa depan.
Quark dikembangkan dengan bahasa Rust. Build perlu menginstal Rust nightly. Silakan gunakan versi bagus yang diketahui saat ini nightly-2023-12-11-x86_64-unknown-linux-gnu
(ganti x86_64
dengan aarch64
untuk build aarch64)
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
Tambahkan komponen karat-src ke rantai alat saat ini:
rustup component add rust-src
Dan instal "cargo-xbuild" untuk kompilasi qkernel cross
cargo install cargo-xbuild
Instal perpustakaan libcap
sudo apt-get install libcap-dev
Juga, beberapa perpustakaan tambahan untuk mengkompilasi modul 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
Dan juga beberapa perpustakaan tambahan untuk mengkompilasi modul GPU:
(Harap diperhatikan, Anda dapat menjalankan perintah berikut bahkan di mesin non nvidia untuk mendapatkan kemampuan mengkompilasi modul 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
. "quark" berisi kode QVisor dan juga mengimplementasikan antarmuka OCI.sudo mkdir /var/log/quark
sudo systemctl restart docker
Contoh aplikasi buruh pelabuhan hello-world dapat dijalankan seperti di bawah ini:
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
File konfigurasi Quark Container ada di /etc/quark/config.json . Detail konfigurasinya adalah TBD...
Log debug Quark Container diletakkan di /var/log/quark/quark.log. Itu bisa diaktifkan atau dinonaktifkan dengan "DebugLevel" dari /etc/quark/config.json. Ada 5 kemungkinan nilai "DebugLevel" seperti di bawah ini.
Off,
Error,
Warn,
Info,
Debug,
Trace,
Ketika log diaktifkan, misalnya Debug. Setelah menjalankan image buruh pelabuhan dengan Quark Container, log akan dibuat di /var/log/quark/quark.log. Lihat wiki untuk tip debugging lebih lanjut.
Silakan merujuk ke tautan ini untuk menyiapkan k8s menggunakan wadah quark dan dukungan RDMA.
Quark sekarang memiliki dukungan awal untuk aarch64 (masih dalam pengembangan aktif).
Catatan tentang arsitektur arm64 yang lebih baru :
arsitektur arm64 yang lebih baru menambahkan bit PAN (Privilege Access Never) di pstate yang mencegah kernel (el1) mengakses memori pengguna (el0). Dukungan penuh adalah WIP. Sebagai solusi sementara kami cukup menghapus PAN di qkernel. Untuk melakukan ini, Anda perlu menerapkan patch ini secara manual
~quark/[email protected]
. Untuk berlangganan daftar, kirim email kosong ke ~quark/[email protected]
Untuk mempelajari lebih lanjut tentang penggunaan milis, lihat etiket milis.