Après deux ans de développement, la version 3.0 du projet Kata Containers a été publiée, développant un environnement pour l'exécution des conteneurs avec une isolation basée sur de véritables mécanismes de virtualisation. Le projet a été créé par les entreprises Intel et Hyper par la fusion des technologies Clear Containers et runV. Le code du projet est écrit en Go et Rust et est distribué sous la licence Apache 2.0. Le développement du projet est supervisé par un groupe de travail créé sous l'égide de l'organisation indépendante OpenStack Foundation, incluant des entreprises comme Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE et ZTE.
La base de Kata est un runtime qui permet de créer des machines virtuelles compactes exécutées à l'aide d'un véritable hyperviseur, au lieu d'utiliser des conteneurs traditionnels qui reposent sur un noyau Linux partagé et sont isolés par le biais de namespaces et de cgroups. L'application machines virtuelles permet d'atteindre un niveau de sécurité plus élevé, protégeant contre les attaques résultant de l'exploitation de vulnérabilités dans le noyau Linux.
Kata Containers est orienté vers l'intégration dans les infrastructures d'isolement de conteneurs existantes, avec la possibilité d'utiliser des machines virtuelles similaires pour renforcer la protection des conteneurs traditionnels. Le projet fournit des mécanismes pour assurer la compatibilité des machines virtuelles légères avec diverses infrastructures d'isolement de conteneurs, plates-formes d'orchestration de conteneurs et spécifications telles que OCI (Open Container Initiative), CRI (Container Runtime Interface) et CNI (Container Networking Interface). Des outils d'intégration avec Docker, Kubernetes, QEMU et OpenStack sont disponibles.

L'intégration avec les systèmes de gestion de conteneurs est réalisée par une couche qui simule la gestion d'un conteneur, qui, via une interface gRPC et un proxy spécial, communique avec l'agent de gestion dans la machine virtuelle. À l'intérieur de l'environnement virtuel, qui est lancé par l'hyperviseur, un noyau Linux spécialement optimisé est utilisé, contenant seulement l'ensemble minimal de fonctionnalités nécessaires.
Dragonball Sandbox (édition KVM optimisée pour les conteneurs) est pris en charge comme hyperviseur, avec des outils QEMU, ainsi que Firecracker et Cloud Hypervisor. L'environnement système comprend un démon d'initialisation et un agent (Agent). L'Agent permet l'exécution d'images de conteneur spécifiées par l'utilisateur au format OCI pour Docker et CRI pour Kubernetes. Lorsqu'il est utilisé avec Docker, un conteneur distinct est créé pour chaque conteneur. machine virtuelle, c'est-à-dire qu'un environnement exécuté au-dessus de l'hyperviseur est appliqué pour le lancement imbriqué des conteneurs.

Pour réduire la consommation de mémoire, un mécanisme DAX (accès direct au système de fichiers contournant le cache de pages sans utiliser le niveau de dispositifs de blocs) est utilisé, et la technologie KSM (Kernel Samepage Merging) est appliquée pour la déduplication des zones de mémoire identiques, ce qui permet de partager les ressources du système hôte et de connecter à différents systèmes invités un modèle d'environnement système commun.
Dans la nouvelle version :
- Un runtime alternatif (runtime-rs), qui façonne le contenu des conteneurs, a été proposé. Il est écrit en Rust (le runtime précédent était écrit en Go). Ce runtime est compatible avec OCI, CRI-O et Containerd, ce qui permet de l'utiliser avec Docker et Kubernetes.
- Un nouvel hyperviseur dragonball, basé sur KVM et rust-vmm, a été proposé.
- La prise en charge du passage d'accès au GPU a été ajoutée, en utilisant VFIO.
- La prise en charge de cgroup v2 a été ajoutée.
- La prise en charge de la substitution des paramètres sans modifier le fichier de configuration principal a été mise en œuvre, en remplaçant des blocs dans des fichiers séparés placés dans le répertoire « config.d/ ».
- Dans les composants écrits en Rust, une nouvelle bibliothèque a été engagée pour un travail sécurisé avec les chemins de fichiers.
- Le composant virtiofsd (écrit en C) a été remplacé par virtiofsd-rs (écrit en Rust).
- La prise en charge de l'isolation par sandbox des composants QEMU a été ajoutée.
- Dans QEMU, l'API io_uring a été utilisée pour l'entrée/sortie asynchrone.
- Pour QEMU et Cloud-hypervisor, la prise en charge des extensions Intel TDX (Trusted Domain Extensions) a été implémentée.
- Les composants ont été mis à jour : QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, noyau Linux 5.19.2.
Source : opennet.ru
