Willkommen bei Quark Container.
Dieses Repository ist die Heimat des Quark Containers-Codes.
Quark Container ist eine hochleistungsfähige sichere Container-Laufzeitumgebung mit folgenden Funktionen:
Die Performance-Slices sind performance.pdf. Die detaillierten Testschritte und Ergebnisse finden Sie hier
Quark Container verwendet die klassische Linux Virtual Machine-Architektur wie folgt. Es umfasst einen HyperVisor namens QVisor und einen Gastkernel namens QKernel. Im Gegensatz zum üblichen Linux Virtual Machine-Design, bei dem Standard-Betriebssystem-Images wie Linux/Windows auf Qemu ausgeführt werden können. QVisor und QKernel sind eng miteinander verbunden. QVisor unterstützt nur QKernel.
Das High-Level-Design von Quark Container ist wie folgt. Es verarbeitet Containeranwendungsanforderungen mit den folgenden Schritten.
Quark Container unterstützt die Übertragung des TCP-Verkehrs der Containeranwendung mit einer RDMA-Verbindung, also TSoR. TSoR ist ein Container-Netzwerkanbieter im K8S-Cluster und die vorhandene TCP-basierte Containeranwendung kann Daten ohne jegliche Änderung über RDMA übertragen. Da TSoR die Arbeitslast des TCP/IP-Protokollstapels auf die RDMA-NIC verlagert. Es kann einen höheren Durchsatz und eine geringe Latenz bei geringerem CPU-Fußabdruck erreichen. Das TSOR-Testergebnis ist das Redis-Benchmark-Testergebnis mit Vergleich zwischen Quark + TSoR und RunC + Flannel. TSoR zeigt eine 5-fache Durchsatzverbesserung gegenüber Flannel. Die TSoR-Architektur ist wie folgt. Die Einführung gibt es hier
Quark unterstützt hauptsächlich X86-64. Die Unterstützung für aarch64 ist vorläufig und befindet sich in der aktiven Entwicklung. Weitere Architekturen werden in Zukunft verfügbar sein.
Quark wurde mit der Rust-Sprache entwickelt. Der Build muss Rust jede Nacht installieren. Bitte verwenden Sie die aktuelle, bekanntermaßen gute Version nightly-2023-12-11-x86_64-unknown-linux-gnu
(ersetzen Sie x86_64
durch aarch64
für den aarch64-Build).
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
Fügen Sie die Komponente rust-src zur aktuellen Toolchain hinzu:
rustup component add rust-src
Und installieren Sie „cargo-xbuild“ für die qkernel-übergreifende Kompilierung
cargo install cargo-xbuild
Installieren Sie die libcap-Bibliothek
sudo apt-get install libcap-dev
Außerdem einige zusätzliche Bibliotheken zum Kompilieren des RDMA-Moduls:
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
Und auch einige zusätzliche Bibliotheken zum Kompilieren des GPU-Moduls:
(Bitte beachten Sie, dass Sie die folgenden Befehle auch auf einem Nicht-Nvidia-Computer ausführen können, um das GPU-Modul kompilieren zu können.)
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
in den Ordner /usr/local/bin/ kopiert. „quark“ enthält QVisor-Code und implementiert auch die OCI-Schnittstelle.sudo mkdir /var/log/quark
sudo systemctl restart docker
Die Hello-World-Docker-Beispielanwendung kann wie folgt ausgeführt werden:
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
Die Konfigurationsdatei von Quark Container befindet sich unter /etc/quark/config.json . Konfigurationsdetails sind noch offen...
Das Debug-Protokoll von Quark Container wird in /var/log/quark/quark.log abgelegt. Es kann durch „DebugLevel“ von /etc/quark/config.json aktiviert oder deaktiviert werden. Es gibt 5 mögliche Werte für „DebugLevel“, wie unten aufgeführt.
Off,
Error,
Warn,
Info,
Debug,
Trace,
Wenn das Protokoll aktiviert ist, z. B. Debug. Nachdem Sie ein Docker-Image mit Quark Container ausgeführt haben, werden die Protokolle in /var/log/quark/quark.log generiert. Weitere Debugging-Tipps finden Sie im Wiki.
Bitte beachten Sie diesen Link, um k8s mit Quark-Container und RDMA-Unterstützung einzurichten.
Quark verfügt jetzt über vorläufige Aarch64-Unterstützung (noch in aktiver Entwicklung).
Hinweise zu neueren arm64-Architekturen :
Neuere Arm64-Architekturen fügen das PAN-Bit (Privilege Access Never) im pstate hinzu, das verhindert, dass der Kernel (el1) auf den Benutzerspeicher (el0) zugreift. Der volle Support ist in Bearbeitung. Als vorübergehende Problemumgehung löschen wir einfach die PAN im qkernel. Dazu müssen Sie diesen Patch manuell anwenden
~quark/[email protected]
senden. Um die Liste zu abonnieren, senden Sie eine leere E-Mail an ~quark/[email protected]
Weitere Informationen zur Verwendung von Mailinglisten finden Sie in der Mailinglisten-Etikette.