Introduction à l’utilisation des Kata Containers avec le support de l’hyperviseur Firecracker …

Image for post
Image for post

La version 1.5.0-rc2 de Kata Containers introduit le support de l’hyperviseur Firecracker. Bien qu’ils n’existent pas encore de paquets disponibles pour Firecracker, une archive spécifique de Firecracker a été créée qui inclut toutes les configurations et binaires nécessaires à l’exécution de Kata Containers +Firecracker.

Pour rappel, Amazon Web Services (AWS) a annoncé Firecracker, une nouvelle technologie de virtualisation open source qui permet d’exploiter des services sécurisés basés sur des containers multi-locataires en combinant la vitesse, l’efficacité des ressources et les performances offertes par les containers avec la sécurité et l’isolation offertes par les VM traditionnelles. Firecracker implémente un gestionnaire de machine virtuelle (VMM) basé sur KVM, et fournit une API RESTful pour créer et gérer des microVM avec n’importe quelle combinaison de vCPU et de mémoire pour répondre aux besoins des applications. Firecracker est construit avec une émulation de périphérique minimale qui permet un temps de démarrage plus rapide, fournit une empreinte mémoire réduite pour chaque microVM, et offre un environnement sandboxed fiable pour chaque container.

Image for post
Image for post

Firecracker devient un bon complément au projet Kata Containers qui construit des machines virtuelles extrêmement légères se connectant de manière transparente à l’écosystème des containers.

Image for post
Image for post
Image for post
Image for post

J’illustre cela en créant dans Azure une instance Ubuntu 18.04 de type Ev3 avec la possibilité d’utiliser de la virtualisation imbriquée :

Image for post
Image for post
Image for post
Image for post

Je récupère l’archive dédiée de Firecracker depuis github :

$ wget https://github.com/kata-containers/runtime/releases/download/1.5.0-rc2/kata-fc-static-1.5.0-rc2-x86_64.tar.gz$ sudo tar -xvf kata-fc-static-1.5.0-rc2-x86_64.tar.gz -C /
Image for post
Image for post

Docker 18.06 est nécessaire pour faire du Kata avec Firecracker. Pour Kata+Firecracker, un pilote basé sur des blocs comme devicemapper est nécessaire. La dernière version de Docker, 18.09, ne supporte pas devicemapper et n’est pas compatible. J’installe cette version dans l’instance :

Image for post
Image for post

Pour configurer le Docker pour devicemapper et Kata Containers, définissez /etc/docker/daemon.json avec le contenu suivant :

{
"runtimes": {
"kata": {
"path": "/opt/kata/bin/kata-runtime"
}
},
"storage-driver": "devicemapper"
}

Et relancez Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
Image for post
Image for post

Je peux exécuter un conteneur Kata en utilisant Firecracker. Auparavant il faut s’assurer que vsock est pris en charge sur le système hôte :

sudo modprobe vhost_vsock

Si vsock est supporté, je peux lancer le kata container:

docker run --runtime=kata -itd --name=oh-sweet alpine sh

Firecracker fonctionne maintenant sur le système, ainsi qu’un processus kata-shim :

Image for post
Image for post

J’effectue un autre test avec le traditionnel démonstrateur FranceConnect Agent :

Image for post
Image for post

et le démonstrateur est accessible :

Image for post
Image for post
Image for post
Image for post

Dans la logique d’AWS dans l’utilisation de Firecracker dans un contexte Serverless, je fais le test ici de l’exécution des Azure Functions :

Image for post
Image for post
Image for post
Image for post

et notamment avec Azure Function dans un Kata Container via Firecracker :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Un projet à suivre d’autant qu’une mise à jour de l’image du conteneur de kata-deploy pour permettre aux utilisateurs d’installer et configurer plus rapidement les Kata Containers (avec QEMU et Firecracker) dans un cluster Kubernetes qui utilise containerd et/ou CRIO …

Image for post
Image for post

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store