Sortie de Kata Containers 3.0 avec isolation basée sur la virtualisation

Après deux ans de développement, la version du projet Kata Containers 3.0 a été publiée, développant une pile pour organiser l'exécution de conteneurs en utilisant une isolation basée sur des mécanismes de virtualisation à part entière. Le projet a été créé par Intel et Hyper en combinant les 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 les auspices de l'organisation indépendante OpenStack Foundation, qui comprend des sociétés telles que Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE et ZTE. .

Au cœur de Kata se trouve le runtime, qui offre la possibilité de créer des machines virtuelles compactes qui s'exécutent à l'aide d'un hyperviseur complet, au lieu d'utiliser des conteneurs traditionnels qui utilisent un noyau Linux commun et sont isolés à l'aide d'espaces de noms et de groupes de contrôle. L'utilisation de machines virtuelles vous permet d'atteindre un niveau de sécurité plus élevé qui protège contre les attaques causées par l'exploitation des vulnérabilités du noyau Linux.

Kata Containers se concentre sur l'intégration dans les infrastructures d'isolation de conteneurs existantes avec la possibilité d'utiliser des machines virtuelles similaires pour améliorer la protection des conteneurs traditionnels. Le projet fournit des mécanismes pour garantir la compatibilité des machines virtuelles légères avec diverses infrastructures d'isolation 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 sont disponibles pour l'intégration avec Docker, Kubernetes, QEMU et OpenStack.

Sortie de Kata Containers 3.0 avec isolation basée sur la virtualisation

L'intégration avec les systèmes de gestion de conteneurs est réalisée à l'aide d'une couche qui simule la gestion de conteneurs, qui accède à l'agent de gestion dans la machine virtuelle via l'interface gRPC et un proxy spécial. Dans l'environnement virtuel lancé par l'hyperviseur, un noyau Linux spécialement optimisé est utilisé, contenant uniquement l'ensemble minimum de fonctionnalités nécessaires.

En tant qu'hyperviseur, il prend en charge l'utilisation de Dragonball Sandbox (une édition de KVM optimisée pour les conteneurs) avec la boîte à outils QEMU, ainsi que Firecracker et Cloud Hypervisor. L'environnement système comprend un démon d'initialisation et un agent. L'agent permet l'exécution d'images de conteneurs définies par l'utilisateur au format OCI pour Docker et CRI pour Kubernetes. Lorsqu'elle est utilisée conjointement avec Docker, une machine virtuelle distincte est créée pour chaque conteneur, c'est-à-dire L'environnement exécuté au-dessus de l'hyperviseur est utilisé pour le lancement imbriqué de conteneurs.

Sortie de Kata Containers 3.0 avec isolation basée sur la virtualisation

Pour réduire la consommation de mémoire, le mécanisme DAX est utilisé (accès direct au système de fichiers, contournement du cache des pages sans utiliser le niveau du périphérique bloc), et pour dédupliquer des zones mémoire identiques, la technologie KSM (Kernel Samepage Merging) est utilisée, ce qui vous permet pour organiser le partage des ressources du système hôte et se connecter à différents systèmes invités, partager un modèle d'environnement système commun.

Dans la nouvelle version:

  • Un runtime alternatif (runtime-rs) est proposé, qui forme le remplissage des conteneurs, écrit en langage Rust (le runtime fourni précédemment a été écrit en langage Go). Le runtime est compatible avec OCI, CRI-O et Containerd, ce qui lui permet d'être utilisé avec Docker et Kubernetes.
  • Un nouvel hyperviseur dragonball basé sur KVM et rust-vmm a été proposé.
  • Ajout de la prise en charge du transfert d'accès au GPU à l'aide de VFIO.
  • Ajout de la prise en charge du groupe de contrôle v2.
  • La prise en charge de la modification des paramètres sans modifier le fichier de configuration principal a été implémentée en remplaçant les blocs dans des fichiers séparés situés dans le répertoire « config.d/ ».
  • Les composants Rust incluent une nouvelle bibliothèque pour travailler en toute sécurité avec les chemins de fichiers.
  • Le composant virtiofsd (écrit en C) a été remplacé par virtiofsd-rs (écrit en Rust).
  • Ajout de la prise en charge des composants sandboxing QEMU.
  • QEMU utilise l'API io_uring pour les E/S asynchrones.
  • La prise en charge des extensions Intel TDX (Trusted Domain Extensions) a été implémentée pour QEMU et Cloud-hypervisor.
  • Composants mis à jour : QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, noyau Linux 5.19.2.

Source: opennet.ru

Ajouter un commentaire