La version 3.2 du projet Kata Containers a été publiée, développant une pile pour l'exécution de conteneurs utilisant l'isolation basée sur des mécanismes de virtualisation complets. Le projet a été créé par les entreprises Intel et Hyper par la combinaison 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, dont font partie des entreprises telles que Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE et ZTE.
La base de Kata est un runtime permettant de créer des machines virtuelles compactes, exécutées en utilisant un hyperviseur complet, au lieu d'utiliser des conteneurs traditionnels qui partagent le noyau Linux et sont isolés par des espaces de noms et des cgroups. L'utilisation de 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 :
- Outre le support de l'architecture AMD64 (x86_64), des versions pour les architectures ARM64 (Aarch64) et s390 (IBM Z) ont été adaptées. Le support de l'architecture ppc64le (IBM Power) est en cours de développement.
- Pour l'accès aux images des conteneurs, le système de fichiers Nydus 2.2.0 est utilisé, qui emploie l'adressage par contenu pour une collaboration efficace avec des images standards. Nydus supporte le chargement à la volée des images (ne les charge que lorsque cela est nécessaire), fournit une déduplication des données répétées et peut utiliser différents backends pour le stockage effectif. La compatibilité avec POSIX est assurée (similaire à Composefs, l'implémentation Nydus combine les capacités d'OverlayFS avec EROFS ou un module FUSE).
- Le gestionnaire de machines virtuelles Dragonball est intégré au projet Kata Containers, qui sera désormais développé dans un dépôt commun.
- La fonction de débogage pour se connecter à la machine virtuelle depuis l'environnement hôte a été ajoutée à l'utilitaire kata-ctl.
- Les capacités de gestion des GPU ont été étendues et le support du passage de GPU aux conteneurs pour le calcul confidentiel (Confidential Container) a été ajouté, fournissant un cryptage des données, de la mémoire et de l'état d'exécution pour protéger contre une éventuelle compromission de l'environnement hôte ou de l'hyperviseur.
- Dans Runtime-rs, un sous-système de gestion des dispositifs utilisés dans les conteneurs ou les environnements sandbox a été ajouté. Le support est assuré pour le vfio, ainsi que pour les dispositifs de bloc, réseau et autres types.
- La compatibilité avec OCI Runtime 1.0.2 et Kubernetes 1.23.1 a été assurée.
- Pour le noyau Linux, il est recommandé d'utiliser la version 6.1.38 avec des patches.
- Le développement a été transféré de l'utilisation du système d'intégration continue Jenkins à GitHub Actions.
Source : opennet.ru
