Bienvenue dans Quark Container.
Ce référentiel héberge le code de Quark Containers.
Quark Container est un environnement d'exécution de conteneur sécurisé hautes performances avec les fonctionnalités suivantes :
Les tranches de performances sont performance.pdf. Les étapes de test détaillées et le résultat sont ici
Quark Container reprend l'architecture classique de la machine virtuelle Linux comme ci-dessous. Il comprend un HyperVisor nommé QVisor et un noyau invité nommé QKernel. Contrairement à la conception courante de la machine virtuelle Linux, dans laquelle une image de système d'exploitation standard telle que Linux/Windows peut s'exécuter sur Qemu. QVisor et QKernel sont étroitement couplés. QVisor ne prend en charge que QKernel.
La conception de haut niveau de Quark Container est la suivante. Il gère la demande d’application conteneur avec les étapes suivantes.
Quark Container prend en charge le transfert du trafic TCP de l'application conteneur avec une connexion RDMA, c'est-à-dire TSoR. TSoR est un fournisseur de réseau de conteneurs dans le cluster K8S et l'application de conteneur basée sur TCP existante peut transférer des données via RDMA sans AUCUNE modification. Alors que TSoR décharge la charge de travail de la pile de protocole TCP/IP vers la carte réseau RDMA. Il peut atteindre un débit plus élevé, une faible latence avec moins d'empreinte CPU. Le résultat du test TSOR est le résultat du test de référence Redis avec comparaison entre Quark + TSoR et RunC + Flannel. TSoR montre une amélioration de débit 5 fois supérieure à celle de Flannel. L'architecture TSoR est la suivante. La présentation est ici
Quark prend principalement en charge X86-64. Le support d’aarch64 est préliminaire et en cours de développement actif. D'autres architectures seront disponibles dans le futur.
Quark est développé avec le langage Rust. La version doit installer Rust tous les soirs. Veuillez utiliser la bonne version actuelle connue nightly-2023-12-11-x86_64-unknown-linux-gnu
(remplacez x86_64
par aarch64
pour la version aarch64)
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
Ajoutez le composant rust-src à la chaîne d'outils actuelle :
rustup component add rust-src
Et installez "cargo-xbuild" pour la compilation croisée qkernel
cargo install cargo-xbuild
Installer la bibliothèque libcap
sudo apt-get install libcap-dev
Aussi, quelques bibliothèques supplémentaires pour compiler le module 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
Et aussi quelques bibliothèques supplémentaires pour compiler le module GPU :
(Veuillez noter que vous pouvez exécuter les commandes suivantes même sur une machine autre que NVIDIA pour pouvoir compiler le module 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" contient le code QVisor et implémente également l'interface OCI.sudo mkdir /var/log/quark
sudo systemctl restart docker
L'exemple d'application Docker hello-world peut être exécuté comme ci-dessous :
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
Le fichier de configuration de Quark Container se trouve dans /etc/quark/config.json . Les détails de la configuration sont à déterminer...
Le journal de débogage de Quark Container est placé dans /var/log/quark/quark.log. Il pourrait activer ou désactiver par "DebugLevel" de /etc/quark/config.json. Il existe 5 valeurs possibles de "DebugLevel" comme ci-dessous.
Off,
Error,
Warn,
Info,
Debug,
Trace,
Lorsque le journal est activé, par exemple Debug. Après avoir exécuté une image Docker avec Quark Container, les journaux seront générés dans /var/log/quark/quark.log. Consultez le wiki pour d'autres conseils de débogage.
Veuillez vous référer à ce lien pour configurer les k8 à l'aide du conteneur quark et du support RDMA.
Quark dispose désormais d'un support préliminaire pour aarch64 (toujours en développement actif).
Notes sur les nouvelles architectures arm64 :
Les architectures arm64 plus récentes ajoutent le bit PAN (Privilege Access Never) dans le pstate qui empêche le noyau (el1) d'accéder à la mémoire de l'utilisateur (el0). Le support complet est WIP. Comme solution de contournement temporaire, nous effaçons simplement le PAN dans le qkernel. Pour ce faire, vous devez appliquer manuellement ce correctif
~quark/[email protected]
. Pour vous abonner à la liste, envoyez un e-mail vide à ~quark/[email protected]
Pour en savoir plus sur l'utilisation de la liste de diffusion, consultez l'étiquette de la liste de diffusion.